当前位置: 首页 > 知识库问答 >
问题:

Httpclient multipart/form-data同时发布图像和json

施振海
2023-03-14

我试图用C#代码在一个请求中上传image和json,但服务器总是返回400个错误的请求。使用fiddler执行相同的请求返回状态代码200。帮忙...

以下是我的小提琴手代码:

------WebKitFormBoundary7MA4YWXKTRZU0GW内容-配置:表单-数据;name=“application/json”content-type:application/json

var boundary = "Upload----" + DateTime.Now.Ticks.ToString();
MultipartFormDataContent form = new MultipartFormDataContent(boundary);
StringContent content = new StringContent(bodyJson);
content.Headers.ContentType = MediaTypeHeaderValue.Parse("application/json");
form.Add(content, "application/json");

var imageContent = new ByteArrayContent(image);
imageContent.Headers.ContentType = MediaTypeHeaderValue.Parse("image/jpeg");
form.Add(imageContent, "image/jpeg", "image.jpg");
var responseTask = _httpClient.PostAsync(url, form).Result;

反应总是一样的:

共有1个答案

酆光熙
2023-03-14

您可以将参数作为字符串内容传递,请检查下面的示例。

public async Task<JObject> ExecutePostAsync(Stream myStreem, string url, string token, string parameter1, string parameter2, string parameter3)
    {
        try
        {
            using (var content = new MultipartFormDataContent("----MyBoundary"))
            {

                using (var memoryStream = myStreem)
                {
                    using (var stream = new StreamContent(memoryStream))
                    {
                        content.Add(stream, "file", Guid.NewGuid().ToString() + ".jpg");
                        content.Add(new StringContent(parameter1), "parameter1");
                        content.Add(new StringContent(parameter3), "parameter2");
                        content.Add(new StringContent(parameter3), "parameter3");

                        using (HttpClient client = new HttpClient())
                        {
                            client.DefaultRequestHeaders.Add("Authorization", "Bearer " + token);
                            var responce = await client.PostAsync(url, content);
                            string contents = await responce.Content.ReadAsStringAsync();
                            return (JObject.Parse(contents));
                        }

                    }
                }
            }

        }
        catch (Exception ex)
        {
            throw ex;
        }
    }

在API中从表单请求中获取数据

    public async Task<IHttpActionResult> UploadFile()
    {

        string parameter1 = HttpContext.Current.Request.Form["parameter1"];
        string parameter2 = HttpContext.Current.Request.Form["parameter2"];
        string parameter3 = HttpContext.Current.Request.Form["parameter3"];

    }
 类似资料:
  • 我的用户可以在我的服务器上发布一张食物的照片和一个关于食物的帖子。 例如,假设某人看到了好吃的东西,拍了一张照片,然后写上“Tasty!”在照片下面。照片被发送到服务器,消息“Tasty!”包括用户名、日期、位置等,通过一个api调用在一个名为“POST”的对象中发送到我的服务器。 我在我的android端写了以下代码: 请求网络执行过程中发生异常:无法写入请求:找不到请求类型[model.pos

  • 在结果上,当我运行我的脚本时,它可以更新这些变量,但没有图像运气…我很困惑...我应该做什么来放入变量? 我从谷歌学到了一切,现在我被困住了,因为我没有任何深度编程的知识,你能帮我做什么把图像放进$data数组吗? 我试图在以下线程上查看:multipart/form-data进入数组不处理multipart/form-data php curl将原始图像数据作为multipart/form-da

  • 问题内容: 如何发布到Content-Type:multipart / form-data,[] byte参数和字符串参数的API?我已经尝试过,但是失败了。 错误信息: 转到代码: 问题答案: 现在,我很高兴分享我的解决方案 } }

  • 我正在尝试使用curl向REST服务发布一个xml文件(utf-16编码)。REST服务需要“multipart/form-data”内容类型。 Curl脚本:Curl-k-i-h“content-type=multipart/form-data”-f“filename=@file.xml;type=text/xml”-x POST-u: 然而,我在运行脚本时得到500个内部服务器错误。 响应:<

  • 我正在尝试从我的电脑上传图像到一个使用Go的网站。通常,我使用一个bash脚本,向服务器发送一个文件和一个密钥:

  • 描述 (Description) Framework7几乎没有什么有用的方法,这使得使用表单变得容易。 下表显示了Framework7中使用的表单数据方法 - S.No 方法和描述 1 表格到JSON 您可以使用formToJSON()方法将所有表单字段值转换为JSON。 2 来自JSON的表格 您可以使用formFromJSON方法根据JSON数据填充表单。