C# HttpResponseMessage.Content为空
我一直在一个移动应用程序的后端和前端工作,我很难让我的post请求正常工作。我一直在使用Xamarin.Forms作为前端,使用.Net作为后端。 客户端的代码:C# HttpResponseMessage.Content为空,c#,.net,xamarin.forms,httpresponsemessage,C#,.net,Xamarin.forms,Httpresponsemessage,我一直在一个移动应用程序的后端和前端工作,我很难让我的post请求正常工作。我一直在使用Xamarin.Forms作为前端,使用.Net作为后端。 客户端的代码: var res = await App.Client.PostAsync("url", args); var s =await res.Content.ReadAsStringAsync(); await DisplayAlert("Content", s, "OK"); 我已经检查并
var res = await App.Client.PostAsync("url", args);
var s =await res.Content.ReadAsStringAsync();
await DisplayAlert("Content", s, "OK");
我已经检查并收到一条httpResponseMessage,但是当我尝试读取它时,内容流总是空的。我怀疑这是我在服务器端做错了什么。
服务器端代码:
[MobileAppController,Authorize,RoutePrefix("api/SomeController")]
public class someController : ApController{
//...
[HttpPost,Route("theRoute/{id}"),AllowAnonymous]
public HttpResponseMessage someFunction(args){
return new HttpResponseMessage(System.Net.HttpStatusCode.OK)
{Content=new StringContent("Hello");
}
//...
}
如果改为使用res.ToString()显示响应,则会收到一条带有
“状态代码:200,原因短语:'OK',版本:1.1,内容:
System.Net.HttpStreamContent,标题:{服务器:Microsoft IIS/10.0
X-Powered-By:ASP.NET,日期:2018年2月20日星期二格林威治标准时间17:08:42,
内容长度:4,内容类型:application/json;字符集=utf-8}
我一直在想为什么内容是空的,但我不知道为什么
编辑1:App.Client是整个移动应用程序使用的HttpClient
在my app.xaml.cs文件中:
static HttpClient client;
public static HttpClient Client
{
get
{
if(client==null){
client = new HttpClient();
}
return client;
}
}
尝试在应用程序响应类型上设置客户端DefaultRequestHeaders。例如:
client.DefaultRequestHeaders.Add("Accept", "application/json");
App.Client.PostAsync
是您创建的方法吗?如果是,您可能会在有机会读取流之前处理客户端。#您是否尝试过从控制器返回字符串或对象?实际上为空?res.Content?您是否检查了url是否正确,并尝试通过POSM进行测试A(镀铬扩展)找到你的后端工作正常。如果它工作正常,那么只需调试并检查res有什么。如果res.Content在那里,并且s有一个值,那么我猜你在显示警报消息时丢失了s.Result以获取其结果。只需检查此链接并返回字符串或对象,就可以处理get请求,但我似乎无法这样做让POST请求正常工作。尝试显式设置内容类型,如content=new-StringContent(“Hello”,Encoding.UTF8,“text/plain”);