WebClient get/post to https 总是超时
WebClient get/post to https always timeout
我正在使用 Xamarin 开发移动应用程序。该应用程序正在使用 API,它最近发布了一个使用 HTTPS 而不是 HTTP 的新版本。当将 URL 更改为使用 HTTPS 并添加授权 header 时,请求会卡住并最终超时。例如,在 Postman 中测试时,API 调用工作正常。
所有 API 调用都是从便携式库进行的,我是 运行 物理设备上的应用程序。
任何人都知道我可以做些什么来解决这个问题?
这是我用来 post 数据到 API 的代码:
private async Task<HttpResponseMessage> PostData(HttpContent content, string authKey)
{
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Add("Authorization", authKey);
client.Timeout = new TimeSpan(0, 0, 25);
var response = await client.PostAsync(BaseUrl, content);
return response;
}
}
编辑
我尝试了很多不同的解决方案,设置 headers、内容类型等等,但没有任何效果。我试过使用 HttpWebRequest 而不是 HttpClient 但没有成功。
我已经设置了一个 C# 控制台应用程序并创建了一个新的干净的 Xamarin Android 项目。一切都在控制台应用程序中工作,但在 Xamarin 项目中不工作。
我让它在一个干净的 Xamarin Android 项目中工作,但只有在使用 ModernHttpClient 时才可以。
但是在我的便携式 class 库中实现它时它仍然不起作用。相反,将我的 Web 请求移动到特定的平台项目使其工作!我最终使用了一个声明了 post 方法的接口。每个平台项目都声明一个 "PostHandler",PCL 正在使用它。
public interface IPostHandler
{
Task<HttpResponseMessage> BeginPost(HttpContent content, string requestUri);
}
public class AndroidPostHandler : IPostHandler
{
public async Task<HttpResponseMessage> BeginPost(HttpContent content, string requestUri)
{
using (var client = new HttpClient(new NativeMessageHandler()))
{
var response = await client.PostAsync(baseUrl, content);
return response;
}
}
}
我正在使用 Xamarin 开发移动应用程序。该应用程序正在使用 API,它最近发布了一个使用 HTTPS 而不是 HTTP 的新版本。当将 URL 更改为使用 HTTPS 并添加授权 header 时,请求会卡住并最终超时。例如,在 Postman 中测试时,API 调用工作正常。
所有 API 调用都是从便携式库进行的,我是 运行 物理设备上的应用程序。
任何人都知道我可以做些什么来解决这个问题?
这是我用来 post 数据到 API 的代码:
private async Task<HttpResponseMessage> PostData(HttpContent content, string authKey)
{
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Add("Authorization", authKey);
client.Timeout = new TimeSpan(0, 0, 25);
var response = await client.PostAsync(BaseUrl, content);
return response;
}
}
编辑
我尝试了很多不同的解决方案,设置 headers、内容类型等等,但没有任何效果。我试过使用 HttpWebRequest 而不是 HttpClient 但没有成功。
我已经设置了一个 C# 控制台应用程序并创建了一个新的干净的 Xamarin Android 项目。一切都在控制台应用程序中工作,但在 Xamarin 项目中不工作。
我让它在一个干净的 Xamarin Android 项目中工作,但只有在使用 ModernHttpClient 时才可以。
但是在我的便携式 class 库中实现它时它仍然不起作用。相反,将我的 Web 请求移动到特定的平台项目使其工作!我最终使用了一个声明了 post 方法的接口。每个平台项目都声明一个 "PostHandler",PCL 正在使用它。
public interface IPostHandler
{
Task<HttpResponseMessage> BeginPost(HttpContent content, string requestUri);
}
public class AndroidPostHandler : IPostHandler
{
public async Task<HttpResponseMessage> BeginPost(HttpContent content, string requestUri)
{
using (var client = new HttpClient(new NativeMessageHandler()))
{
var response = await client.PostAsync(baseUrl, content);
return response;
}
}
}