Xamarin 更新后HTTP Get请求错误

Xamarin 更新后HTTP Get请求错误,xamarin,httpclient,bad-request,Xamarin,Httpclient,Bad Request,我今天已经将我的Xamarin工具从4.1更新到4.2。现在,我的Android应用程序在访问我的Web服务器时给了我错误400:Bad Request 我使用的两台服务器正在运行启用SSL的IIS 对其中一台服务器的请求工作正常。对另一台服务器的请求我得到400:错误的请求,在安卓6上。同样的代码在iOS和Windows Phone上运行良好。如果我在双方(例如Fiddler)之间配置代理,那么一切都可以正常工作 是否有人遇到同样的问题或有线索,Android设备或模拟器上发生了什么 我曾尝试

我今天已经将我的Xamarin工具从4.1更新到4.2。现在,我的Android应用程序在访问我的Web服务器时给了我
错误400:Bad Request

我使用的两台服务器正在运行启用SSL的IIS

对其中一台服务器的请求工作正常。对另一台服务器的请求我得到400:错误的请求,在安卓6上。同样的代码在iOS和Windows Phone上运行良好。如果我在双方(例如Fiddler)之间配置代理,那么一切都可以正常工作

是否有人遇到同样的问题或有线索,Android设备或模拟器上发生了什么

我曾尝试在项目属性中使用不同的HTTP客户机处理程序,但它们都不起作用

以下是相关代码:

使用(var handler=new-HttpClientHandler
{
AllowAutoRedirect=false,
凭证=\u凭证,
预验证=真,
Proxy=WebRequest.DefaultWebProxy,
})
{
使用(var客户端=新的HttpClient(处理程序))
{
client.DefaultRequestHeaders.UserAgent.tryparsead(_UserAgent);
client.Timeout=执行超时;
使用(var msg=await client.GetAsync(uri,cancelTokenSource.Token).ConfigureAwait(false))
{
返回await msg.Content.ReadAsStringAsync().ConfigureAwait(false);
}
}
}

在查看Fiddler输出后,我检测到sslv3 ClientHello握手中存在细微差异:Xamarin 4.1在“Extensions:server_name”中使用了服务器名称;Xamarin 4.2使用服务器名称和端口。这可能是问题所在吗?我已将您的问题重新格式化,使其更简洁、更易于阅读。除去所有的绒毛。。。我也在代码中添加了语法hilighting。还从标题中删除了标记。另外,在使用HttpClient时,您不应该在using语句中使用它,即使它实现了IDisposable。应将其视为共享资源和静态资源。尽可能地重用它,以避免将打开的套接字挂接到web服务器上。SSLV3也很容易受到贵宾犬的影响,所以你应该考虑使用TLSV1.2或更高版本。当你提出请求时,服务器上的日志会说什么?您的异常是否有包含更多信息的消息或内部异常?您的输出窗口是否向您显示了有关出错原因的更多信息?至于服务器端,我不能随意使用我想要的任何东西。。。已定义接口和协议的现有服务器。。。IIS日志不包含我的webrequest,以防出错;要么它被防火墙(它是一个客户站点)阻止,要么它在呼叫链中的时间太早,无法记录日志。至于客户端,我没有得到更多的信息;我得到的只是一个带有上述错误的HTML字符串……在查看Fiddler输出后,我检测到sslv3 ClientHello握手中的一个细微差别:Xamarin 4.1在“Extensions:server_name”中使用了服务器名称;Xamarin 4.2使用服务器名称和端口。这可能是问题所在吗?我已将您的问题重新格式化,使其更简洁、更易于阅读。除去所有的绒毛。。。我也在代码中添加了语法hilighting。还从标题中删除了标记。另外,在使用HttpClient时,您不应该在using语句中使用它,即使它实现了IDisposable。应将其视为共享资源和静态资源。尽可能地重用它,以避免将打开的套接字挂接到web服务器上。SSLV3也很容易受到贵宾犬的影响,所以你应该考虑使用TLSV1.2或更高版本。当你提出请求时,服务器上的日志会说什么?您的异常是否有包含更多信息的消息或内部异常?您的输出窗口是否向您显示了有关出错原因的更多信息?至于服务器端,我不能随意使用我想要的任何东西。。。已定义接口和协议的现有服务器。。。IIS日志不包含我的webrequest,以防出错;要么它被防火墙(它是一个客户站点)阻止,要么它在呼叫链中的时间太早,无法记录日志。至于客户端,我没有得到更多的信息;我得到的只是一个带有上述错误的HTML字符串。。。