Rest Xamarin Forms-simple PostAsync()返回错误400错误请求
我已经检查了每一个类似的问题,虽然它们是相似的,但没有找到解决方案 问题: 我使用Rest Xamarin Forms-simple PostAsync()返回错误400错误请求,rest,asynchronous,xamarin,post,Rest,Asynchronous,Xamarin,Post,我已经检查了每一个类似的问题,虽然它们是相似的,但没有找到解决方案 问题: 我使用HttpClient()实现了一个从Xamarin移动应用程序到PHP服务器的非常简单的post请求。目前,PHP服务器只需打印出它给出的任何post请求 当我使用Postman发送我的web服务器post请求时,PHP工作正常,但是尝试从我的移动应用程序发送post请求会导致错误: {状态代码:400,原因短语:“错误请求”,版本:1.1,内容:System.Net.Http.StreamContent,标题:
HttpClient()
实现了一个从Xamarin移动应用程序到PHP服务器的非常简单的post请求。目前,PHP服务器只需打印出它给出的任何post请求
当我使用Postman
发送我的web服务器post请求时,PHP工作正常,但是尝试从我的移动应用程序发送post请求会导致错误:
{状态代码:400,原因短语:“错误请求”,版本:1.1,内容:System.Net.Http.StreamContent,标题:
{
日期:2018年8月3日星期五08:52:36 GMT
传输编码:分块
连接:保持活力
设置Cookie:uuu cfduid=d54d4dc18d07eeae5179fde8e4533dd6881533286355;expires=Sat,03-Aug-19 08:52:35 GMT;path=/;domain=.braz.io;HttpOnly;安全
预期CT:最大年龄=604800,报告uri=”https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
服务器:cloudflare
CF-RAY:44478c8b9d0c1d68 MEL
内容类型:text/html
}}
这是我偶然发现的一个解决方案(如果有人能在评论中写下/编辑这个答案,说明为什么这是一个很好的解决方案!)
右键单击安卓项目->安卓选项->高级->将
HttpClient实现
从Default
更改为Android
,原因可能有很多。我建议首先检查响应的主体,看看它是否提供了有关请求错误原因的详细信息。我将使用完整的错误消息编辑我的问题否您需要阅读响应的主体string body=wait response.Content.ReadAsStringAsync()
查看是否有任何重要的详细信息。有时服务器会在响应中提供详细信息。您所描述的上述功能似乎刚刚返回了一个简单的400错误请求
html页面,我会将其添加到问题中,因为您没有发送正确的内容类型?
public class RestService
{
HttpClient client;
private const string URL = "https://braz.io/mobile.php";
public RestService()
{
client = new HttpClient();
client.MaxResponseContentBufferSize = 256000;
}
public async Task<string> getUserInformation(string username, string password)
{
var uri = new Uri(string.Format(URL, string.Empty));
try
{
StringContent s = new StringContent("HELLO WORLD");
var response = await client.PostAsync(uri, s);
}
catch (Exception ex)
{Console.WriteLine(ex);}
return null;
}
}
<html>\r\n<head><title>400 Bad Request</title></head>\r\n<body bgcolor=\"white\">\r\n<center><h1>400 Bad Request</h1></center>\r\n<hr><center>openresty/1.11.2.4</center>\r\n</body>\r\n</html>\r\n"