我有一个用。net核心编写的Rest API,它接受一个文件作为Multipart/Form-data的输入。当我从Swagger/Postman运行它时,API工作得非常好。
这是API端点。
[HttpPost("CreateStudy")]
public ActionResult CreateStudy([FromForm] APIRequest request)
{
// rest of the code
这里也是APIRequest对象。它只有一个属性是IFormFile Type。
public class APIRequest
{
public IFormFile XMLFile { get; set; }
}
到目前为止,它运行良好。问题是,我正试图编写一个客户端代码,将调用此API并从c#代码传递文件。
但是我总是在客户端代码中得到一个400-Bad的请求。
这是我正在尝试的客户端代码。
public string CallServiceWithFileAsync(string EndPointURL, string FilePath)
{
string ResultStatusCode;
Uri uri = new Uri(EndPointURL);
var Client = new HttpClient();
Client.DefaultRequestHeaders.Clear();
//Prepare Message
HttpRequestMessage Message = new HttpRequestMessage();
Message.Method = HttpMethod.Post;
Message.Headers.Add("Accept", "application/octet-stream");
Message.RequestUri = new Uri(EndPointURL);
using (Stream fileStream = File.OpenRead(FilePath))
{
var content = new StreamContent(fileStream);
var response = Client.PostAsync(uri, content);
ResultStatusCode = response.Result.StatusCode.ToString();
}
return ResultStatusCode;
}
我在这里做错了什么?发送文件到REST端点的正确方法是什么?
[FromForm]
期望接收application/x-www-url-formencoded
的报头。如果不是这样,请检查输出日志,看看请求没有被处理的原因。