使用来自Android Xamarin的HttpClient发出POST请求时的空响应

时间:2014-02-24 08:49:09

标签: android xamarin.android httpresponse dotnet-httpclient

我使用Xamarin从我的Android应用程序发送POST请求。我使用HttpClient发出请求

我做过的事情:

1)指定的Internet权限 2)测试了Postman对google Chrome的请求 3)逐步调试代码

问题:

1)我得到的答案为null。 2)发现问题可能是在收到回复时。

这是我的代码: -

var resultString = String.Empty;
        var registerContent = new StringBuilder();

        registerContent.Append("DeviceId=");
        registerContent.Append(deviceId);
        registerContent.Append("&");
        registerContent.Append("Name=");
        registerContent.Append(deviceName);
        registerContent.Append("&");
        registerContent.Append("EncodedAccountName‏=");
        registerContent.Append(username);


      var client = DataClient.Instance;
        var request = new HttpRequestMessage(HttpMethod.Post,new Uri(EndPoints.RegisterDeviceEndPoint, UriKind.Absolute))
        {
            Content = new StringContent("DeviceId=" + deviceId + "&Name=" + deviceName + "&EncodedAccountName=" + username)
        };

     request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/x-www-form-urlencoded");

        var result = await client.SendAsync(request);
        if (result.StatusCode == HttpStatusCode.OK)
        {
            resultString = HostUrl.GeAuthorizationtResult(result.Content.ReadAsStringAsync().Result);
        }
        return resultString;

感谢任何帮助 感谢

1 个答案:

答案 0 :(得分:2)

看起来你有很多特定于应用程序的代码,所以很难说是什么导致了这个问题。您可以使用HttpClient对表单帖子的内置支持来简化代码。

var httpClient = new HttpClient();
var values = new List<KeyValuePair<string, string>>
{
    new KeyValuePair<string, string>("DeviceId", deviceId),
    new KeyValuePair<string, string>("Name", deviceName),
    new KeyValuePair<string, string>("EncodedAccountName", username)
};

var response = await httpClient.PostAsync(requestUrl, new FormUrlEncodedContent(values));
response.EnsureSuccessStatusCode();
var resultString = await response.Content.ReadAsStringAsync();

试试这个,看看它是否解决了这个问题。否则,您需要扩展HostUrl.GeAuthorizationtResult()的功能。