I am using Playwright with C# and I need to send a POST request. Since I need to include a CSV data file in the payload, I am using multipart encoding, but have not had much luck so far. The CSV file lives in a folder in my VS project called TestData.
I am pretty sure the issue is with the Buffer. I have gotten a 200 response with no CSV data, so at least I know the API is working. Currently I am getting a 400 response with this code:
public async Task<string> CreateNewSimulation()
{
await CreateSimulatorRequestContext();
var csvFilePath = @"TestData\VT_Gateway.csv";
var csvFileContent = File.ReadAllText(csvFilePath);
var csvFileName = Path.GetFileName(csvFilePath);
var file = new FilePayload()
{
Name = csvFileName,
MimeType = "text/csv",
Buffer = System.Text.Encoding.UTF8.GetBytes(csvFileContent)
};
var multipart = Request.CreateFormData();
multipart.Set("files", file);
multipart.Set("ReplayDelayMilliseconds", 3000);
multipart.Set("Limit", 142);
var simResponse = await Request.PostAsync("/api/devicesimulator/DeviceSimulator", new() { Multipart = multipart });
NEW_SIM_MSG = simResponse.ToString();
return NEW_SIM_MSG;
}
These are the headers I am sending with the request:
var headers = new Dictionary<string, string>
{
{ "Content-Type", "multipart/form-data" },
{ "Authorization", "Bearer " + ACCESS_TOKEN },
{ "Ocp-Apim-Subscription-Key", OCP_KEY }
};