我使用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;
感谢任何帮助 感谢
答案 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()
的功能。