ASP.NET MVC 中的 post 数据中的响应数据为空
Response data is null in post data in ASP.NET MVC
我向 API 发送了一个请求,我得到了空值,但是当我大摇大摆地执行相同的 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', Version: 1.1, Content: System.Net.Http.StreamContent, Headers:
{
Vary: Accept-Encoding
Protect: SA
Date: Sun, 02 Sep 2018 11:20:16 GMT
Set-Cookie: __cfduid=dd54b1f82b2eb402e21bae199246157631535887216; expires=Mon, 02-Sep-19 11:20:16 GMT; path=/; domain=.myweb; HttpOnly
X-Powered-By: Huricane 11
X-Powered-By: ASP.NET
Server: cloudflare
CF-RAY: 453f961cb483bead-FRA
Connection: keep-alive
Content-Length: 0
}}
有人可以帮我吗?
谢谢。
我用这段代码解决了这个问题:
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");
尝试这可能是它的工作:
var data = await MobileService.Client.InvokeApiAsync<RETURN TYPE, SEND_TYPE>($"api/test",
HttpMethod_TYPE, null);
我向 API 发送了一个请求,我得到了空值,但是当我大摇大摆地执行相同的 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', Version: 1.1, Content: System.Net.Http.StreamContent, Headers: { Vary: Accept-Encoding Protect: SA Date: Sun, 02 Sep 2018 11:20:16 GMT Set-Cookie: __cfduid=dd54b1f82b2eb402e21bae199246157631535887216; expires=Mon, 02-Sep-19 11:20:16 GMT; path=/; domain=.myweb; HttpOnly X-Powered-By: Huricane 11 X-Powered-By: ASP.NET Server: cloudflare CF-RAY: 453f961cb483bead-FRA Connection: keep-alive Content-Length: 0 }}
有人可以帮我吗?
谢谢。
我用这段代码解决了这个问题:
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");
尝试这可能是它的工作:
var data = await MobileService.Client.InvokeApiAsync<RETURN TYPE, SEND_TYPE>($"api/test",
HttpMethod_TYPE, null);