I'm trying to use an Autorest generated C# client to send MultipartFormDataContent
but the request always fails as it seems that the RequestContent
in Azure.Core
does not seem to support naïve usage.
For example, I'd like to do something like this:
RequestContext myRequestContext = new RequestContext();
MultipartFormDataContent formData = myObject.ToMultipartFormDataContent();
RequestContent content = RequestContent.Create(formData);
myAutorestClient.MyEndpointPost(content, myRequestContext);
However, it seems as if the RequestContent.Create
call fails to properly convert the MultipartFormDataContent
.
Is there any guidance on how to properly send Multipart form data using the Azure.Core
RequestContent
object?
Try to use ConvertMultipartFormDataContent method to implement it.
private async Task<RequestContent> ConvertMultipartFormDataContent(MultipartFormDataContent formDataContent)
{
using (MemoryStream ms = new MemoryStream())
{
await formDataContent.CopyToAsync(ms);
byte[] formDataAsBytes = ms.ToArray();
return RequestContent.Create(formDataAsBytes);
}
}
The usage should be like below:
public async Task<Response> Test(MyObject myObject, RequestContext myRequestContext)
{
RequestContext myRequestContext = new RequestContext();
MultipartFormDataContent formData = myObject.ToMultipartFormDataContent();
RequestContent content = await ConvertMultipartFormDataContent(formData);
return await myAutorestClient.MyEndpointPost(content, myRequestContext);
}