【问题标题】:Response data is null in post data in ASP.NET MVCASP.NET MVC 中的 post 数据中的响应数据为空
【发布时间】:2019-02-07 17:21:29
【问题描述】:

我向 API 发送一个请求,我得到 null,但是当我大摇大摆地执行相同的 API 时,我得到了结果。

下面是我的 ASP.NET 代码:

HttpClient client = new HttpClient();

var data = new
            {
                test = "mydata"
            };

client.BaseAddress = new Uri("weburl.com");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));

using (client)
{
    HttpResponseMessage res = await client.PostAsJsonAsync("api/test", data);

    if (res.ReasonPhrase == "OK")
    {
        res.EnsureSuccessStatusCode();

        if (res.IsSuccessStatusCode)
        {
            var resualt = res.Content;
            var res2 = await resualt.ReadAsStringAsync();
            var json = JsonConvert.DeserializeObject<JsonModelApi>(res2);

            if (json.Succeed)
            {
                return json.Result;
            }
            else 
                return null;
        }
        else 
            return null;
    }
    else 
        return null;
}

HttpResponseMessage res = await client.PostAsJsonAsync("api/test", data);

分辨率输出:

{StatusCode:200,ReasonPhrase:'OK',版本:1.1,内容:System.Net.Http.StreamContent,标头: { 变化:接受编码 保护:SA 日期:2018 年 9 月 2 日星期日 11:20:16 GMT 设置 Cookie:__cfduid=dd54b1f82b2eb402e21bae199246157631535887216; expires=周一,02-Sep-19 11:20:16 GMT;路径=/;域=.myweb; HttpOnly X-Powered-By:飓风 11 X-Powered-By: ASP.NET 服务器:cloudflare CF-RAY:453f961cb483bead-FRA 连接:保持活动 内容长度:0 }}

谁能帮帮我?

谢谢。

【问题讨论】:

  • 为什么 Content-Length: 0 ?
  • 你能告诉我们你从 Swagger 调用时得到的结果吗?
  • 这是在招摇中输入的:{ "test": "mydata" }
  • 大摇大摆地响应正文:{ "Succeed": true, "Result": "a89d94be-1ed5-43df-ad6f-d90c8cac6c1c" }
  • 问题中没有答案,我已回滚您的更改。如果要添加答案,请添加答案

标签: asp.net asp.net-mvc asp.net-mvc-4 asp.net-web-api


【解决方案1】:

我用这段代码解决了这个问题:

            client.BaseAddress = new Uri("mywebapi");
            client.DefaultRequestHeaders.UserAgent.ParseAdd("Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:61.0) Gecko/20100101 Firefox/61.0");
            client.DefaultRequestHeaders.Accept.Clear();
            client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));

将用户代理添加到 HttpClient,我可以生成内容:

            client.DefaultRequestHeaders.UserAgent.ParseAdd("Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:61.0) Gecko/20100101 Firefox/61.0");

【讨论】:

    【解决方案2】:

    试试这可能是它的工作:

    var data = await MobileService.Client.InvokeApiAsync<RETURN TYPE, SEND_TYPE>($"api/test", 
    HttpMethod_TYPE, null);
    

    【讨论】:

      猜你喜欢
      • 2018-08-08
      • 1970-01-01
      • 2016-05-09
      • 2017-06-07
      • 1970-01-01
      • 1970-01-01
      • 2016-11-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多