标题说明了一切。我需要通过 PUT 请求的正文发送图像。这是我目前拥有的代码。
static class Request
{
private readonly static HttpClient client = new HttpClient();
public static async Task<UploadRequest> Upload(string uri, string path)
{
FileStream fileStream = File.Open(path, FileMode.Open, FileAccess.Read);
StreamContent streamContent = new StreamContent(fileStream);
MultipartContent content = new MultipartContent();
content.Add(streamContent);
Debug.WriteLine("Making a PUT request");
var response = await client.PutAsync(uri, content);
var result = await response.Content.ReadAsStringAsync();
var deserializedResult = JsonConvert.DeserializeObject<UploadRequest>(result);
fileStream.Close();
Debug.WriteLine("Request made, returning result");
return deserializedResult;
}
}
我没有使用 MultipartContent
,而是像这样直接将 streamContent
传入 client.PutAsync
。
FileStream fileStream = File.Open(path, FileMode.Open, FileAccess.Read);
StreamContent streamContent = new StreamContent(fileStream);
Debug.WriteLine("Making a PUT request");
var response = await client.PutAsync(uri, streamContent);
但是它们都在我的 api 上产生相同的错误。这是"message": "You did not upload an image."
。在这两种情况下,当我将 MultipartContent
或 streamContent
传入 PutAsync
时,我都检查了传入内容的实际内容。
相应的输出(按照我提到的顺序)是 System.Net.Http.MultipartContent
和 System.Net.Http.StreamContent
那么我到底传递给正文的是什么?
我之前问错了问题。这是合适的。