C#HttpClient PostAsJsonAsync - >读取字符串出错

时间:2015-10-25 12:36:58

标签: c# dotnet-httpclient

您好我尝试通过服务器端调用web api:

using (var client = new HttpClient())
        {
            using (var rsp = client.PostAsJsonAsync<Request>(url, model).Result)
            {
                if (!rsp.IsSuccessStatusCode)
                {
                    // throw an appropriate exception
                }
                var result = rsp.Content.ReadAsAsync<string>().Result;
            }
        }

但我收到错误

  

读取字符串时出错。意外的令牌:StartObject。路径'',第1行,第1位。

如果我尝试从jQuery调用相同的URL

$.post('http://localhost/api/Test')

服务器返回

 HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Content-Type: application/json
Expires: -1
Server: Microsoft-IIS/8.5
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Sun, 25 Oct 2015 12:15:56 GMT
Content-Length: 104

{
  "Header": {
    "Token": "Response",
    "Timestamp": "2015-10-25T14:15:56.0092197+02:00"
  }
}

“模型”到达api控制器但我无法得到请求的响应。

1 个答案:

答案 0 :(得分:1)

ReadAsAsync<T>尝试反序列化对类型T的响应。在这种情况下,您说要将JSON反序列化为字符串,这实际上没有意义。使用与响应匹配的类型(即包含HeaderToken的自定义数据结构等)或使用ReadAsStringAsync(),如果您真的想要获取字符串。