如何解决忽略 Xamarin Forms 应用中的 VPN/代理配置文件
是否可以忽略任何 vpn/代理配置文件(例如由 1.1.1.1 应用程序等创建的配置文件)并在 xamarin 表单应用程序中使用纯 WiFi 连接(如果可用)?
我正在开发一个无法在网络外部访问的 api,任何类型的代理或 vpn 都会干扰请求。
我的 HttpClient 和 httpclienthandler 代码
protected httpclienthandler ClientHandler {
get {
if(_clientHandler == null) {
_clientHandler = new httpclienthandler() {
AllowAutoRedirect = true,AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate,ClientCertificateOptions = ClientCertificateOption.Automatic,CookieContainer = Cookies,UseCookies = true,UseProxy = false,SslProtocols = SslProtocols.Tls12 | SslProtocols.Tls11
};
_clientHandler.ServerCertificateCustomValidationCallback = CertificateValidationCallback;
}
return _clientHandler;
}
}
protected HttpClient Client {
get {
if(_client == null) {
_client = new HttpClient(ClientHandler,false);
_client.Timeout = TimeSpan.FromSeconds(TIMEOUT);
_client.DefaultRequestHeaders.UserAgent.ParseAdd($"{SharedInfo.ProjectName}/{SharedInfo.Version}");
}
return _client;
}
}
我目前有强制wifi或移动数据连接的代码(搜索了很多找到这个) 但这不是我目前所需要的。
public class ConnectionManager : IConnectionManager {
Context _context => Platform.AppContext;
ConnectivityManager _manager => (ConnectivityManager) _context.GetSystemService(Context.ConnectivityService);
public void ForceMobileData() {
NetworkRequest.Builder request = new NetworkRequest.Builder();
request.AddTransportType(TransportType.Cellular);
_manager.RegisterNetworkCallback(request.Build(),new CustomNetworkAvailableCallBack());
}
public void ForceWifi() {
NetworkRequest.Builder request = new NetworkRequest.Builder();
request.AddTransportType(TransportType.Wifi);
request.AddCapability(NetCapability.NotVpn);
_manager.RegisterNetworkCallback(request.Build(),new CustomNetworkAvailableCallBack());
}
/// <summary>
/// Custom network available call back.
/// </summary>
public class CustomNetworkAvailableCallBack : ConnectivityManager.NetworkCallback {
Context _context => Platform.AppContext;
ConnectivityManager _manager => (ConnectivityManager) _context.GetSystemService(Context.ConnectivityService);
public override void OnAvailable(Network network) {
//ConnectivityManager.SetProcessDefaultNetwork(network); //deprecated (but works even in Android P)
_manager.BindProcesstoNetwork(network); //this works in Android P
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。