通过 PUT 请求的正文发送图像

时间:2021-02-24 05:37:35

标签: c# xamarin.android httpclient

标题说明了一切。我需要通过 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."。在这两种情况下,当我将 MultipartContentstreamContent 传入 PutAsync 时,我都检查了传入内容的实际内容。

相应的输出(按照我提到的顺序)是 System.Net.Http.MultipartContentSystem.Net.Http.StreamContent 那么我到底传递给正文的是什么?

注意

我之前问错了问题。这是合适的。

0 个答案:

没有答案