我一直在处理移动应用程序的后端和前端,并且无法让我的帖子请求正常工作。我一直在使用Xamarin.Forms作为前端,而.Net作为后端。 客户端的代码:
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()显示响应,我会收到一条带
的响应消息“StatusCode:200,ReasonPhrase:'OK',版本:1.1,内容: System.Net.HttpStreamContent,Headers:{Server:Microsoft-IIS / 10.0 X-Powered-By:ASP.NET,日期:星期二,20,2018年2月17:08:42 GMT, Content-Length:4,Content-Type:application / json;字符集= UTF-8}
我一直试图找出为什么内容为空但我无法弄清楚原因。
编辑1:App.Client是整个移动应用程序使用的HttpClient。
在我的app.xaml.cs文件中:
static HttpClient client;
public static HttpClient Client
{
get
{
if(client==null){
client = new HttpClient();
}
return client;
}
}
答案 0 :(得分:0)
尝试在应用程序响应类型上设置客户端DefaultRequestHeaders。例如:
client.DefaultRequestHeaders.Add("Accept", "application/json");