在同一请求中将Json数据和文件从Web应用发送到Web api网络核心

问题描述 投票:1回答:2

我尝试根据相同的请求将json中的序列化模型和文件发送到Web api,但是我无法实现,下面的代码

网络应用

        HttpWebRequest request = WebRequest.Create(Url) as HttpWebRequest;
        request.Method = Verbo;
        request.ContentType = "application/json; charset=utf-8";

        foreach (var item in Body)
        {
            request.Headers.Add(item.Key, item.Value);
        }


        using (var streamWriter = new StreamWriter(request.GetRequestStream()))
        {
            string json = JsonConvert.SerializeObject(obj, Formatting.Indented);

            streamWriter.Write(json);
            streamWriter.Flush();
            streamWriter.Close();
        }


        HttpWebResponse response = request.GetResponse() as HttpWebResponse;
        StreamReader reader = new StreamReader(response.GetResponseStream());
        respuesta = reader.ReadToEnd();

Web Api

       [HttpPost]
       [Route("Insert")]
       public async Task<OperationResponse> Insert([FromForm]Brand Model)
        {
        var res = new OperationResponse
        {
            Ok = false,
            Message = string.Empty
        };


        return res;
        }

绑定模型为空

我的杰森

     {
     "Name": "Jon Doe",
     "TelephoneNumber":"9999999",
     "Email": "[email protected]",
     "Active": false,
     "File": {
     "PathFile": {
         "ContentDisposition": "form-data; name=\"Brand.FileName\"; filename=\"test.p12\"",
         "ContentType": "application/x-pkcs12",
         "Headers": {
             "Content-Disposition": [
                 "form-data; name=\"Brand.FileName\"; filename=\"test.p12\""
              ],
         "Content-Type": [
         "application/x-pkcs12"
            ]
           },
      "Length": 6712,
      "Name": "Brand.FileName",
      "FileName": "test.p12"
      }
     }

我错过了一步吗?

非常感谢。

json.net httpwebrequest asp.net-core-webapi asp.net-core-mvc-2.1
2个回答
0
投票

邮递员进入方法插入,但仍然以null进行绑定,代码estaus为200。


0
投票

由于您的内容类型是application/json; charset=utf-8,因此您需要使用[FromBody]而不是[FromForm]

[HttpPost]
[Route("Insert")]
public async Task<OperationResponse> Insert([FromBody]Brand Model)
© www.soinside.com 2019 - 2024. All rights reserved.