4

我一直在研究移动应用程序的后端和前端,并且无法让我的发布请求正常工作。我一直将 Xamarin.Forms 用于前端,将 .Net 用于后端。

客户端的代码:

var res = await App.Client.PostAsync("url", args);
var s =await res.Content.ReadAsStringAsync();
await DisplayAlert("Content", s, "OK");

我已经检查并收到了一个HttpResponseMessage,但是当我尝试阅读它时,内容流始终是null. 我怀疑这是我在服务器端做错的事情。服务器端代码:

[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'
Version:1.1
Content: System.Net.HttpStreamContent
Headers:{
    Server: Microsoft-IIS/10.0
    X-Powered-By:ASP.NET,
    Date: Tue,20,Feb 2018 17:08:42 GMT,
    Content-Length:4
    Content-Type: application/json; charset=utf-8
}

我一直试图弄清楚为什么Content会这样,null但我不知道为什么。

编辑 1: App.Client 是HttpClient整个移动应用程序使用的。

在我的app.xaml.cs文件中:

static HttpClient client;

public static HttpClient Client
{
    get
    { 
        if (client == null)
        {
            client = new HttpClient();
        }
        return client;
    }
}
4

1 回答 1

-1

尝试在应用程序响应类型上设置客户端 DefaultRequestHeaders。例如:

    client.DefaultRequestHeaders.Add("Accept", "application/json");
于 2018-09-07T08:42:13.480 回答