我想使用Charles Web代理在Windows中使用Android模拟器.我已经成功设置了查尔斯,并使用命令行启动了模拟器:
emulator -http-proxy 127.0.0.1:8888 @NexusOne
Run Code Online (Sandbox Code Playgroud)
我可以看到来自Charles的Android模拟器的流量,但问题是我正在开发使用SSL的实时API,我不知道如何配置Charles让我玩发送的数据和接收.我知道在Charles中设置SSL的两个方面(代理 - >代理设置 - > SSL和代理 - >客户端SSL证书)但我找不到任何可以让我做我想做的事情的体面文档.有没有人经历过Charles或者一般的证书,他们可以解释如何实现这一目标.也许证书的入门书也会很好,因为我似乎缺乏知道这为何如此困难的原因.
如何在不使用默认代理的情况下在WCF客户端上以编程方式设置HTTP代理?
代理,代理,代理.
根据WCF开发模型,我通过在服务的WSDL上运行svcutil.exe来生成客户端"代理"类.(这也会产生客户端配置文件).
在我的代码中,我新建了该类的一个实例,我可以连接到该服务.非常好.
var svcProxy = new MyWebService();
svcProxy.GetInformation(request);
Run Code Online (Sandbox Code Playgroud)
我们将此事称为代理类,但还有另一个代理 - http代理.这个服务使用wsHttpBinding basicHttpBinding,所以它通过http.现在,假设我想通过http代理将客户端连接到Web服务(由.NET BCL中的System.Net.WebProxy建模).我从阅读.NET和WCF文档的丰富,愉快的经验中了解到,如果没有另外指示,WCF运行时将通过http/https进行通信时使用默认系统代理.
我可以使用此处所述的ProxyCfg.exe从WinXP/2003中的命令行进行设置,也可以使用此处所述的netsh.exe在更高版本的Windows中进行设置.
我还可以通过设置System.Net.WebRequest.DefaultWebProxy属性来指定在应用程序中使用的默认Web代理.
但是假设我想通过与系统范围代理不同的代理连接?例如,可能没有系统范围的代理,但我需要特别使用一个用于Web服务.或者可能有一个系统范围的代理,但我需要使用另一个代理,用于Web服务.事实上,可能有多个Web服务客户端,每个客户端应该有一个不同的代理.
如何为每个绑定设置代理?
在ASMX模型中,我可以这样做:
var svcProxy = new MyWebService();
svcProxy.Proxy = new System.Net.WebProxy("http://proxyserver:1234", true);
svcProxy.GetInformation(request);
Run Code Online (Sandbox Code Playgroud)
但是WCF不可能做到这一点; WCF生成的客户端代理类不公开Proxy属性.如何为每个客户端代理设置http代理,以及如何在http代理上设置身份验证?
相关:
- 如何设置代理与凭证到生成的wcf-client
在Node.JS前面运行nginx或其他Web服务器作为反向代理有什么好处?它提供什么?
(此问题适用于有关网络应用程序的问题,而不是网页).
谢谢.
我使用以下代码从互联网获取html数据:
WebProxy p = new WebProxy("localproxyIP:8080", true);
p.Credentials = new NetworkCredential("domain\\user", "password");
WebRequest.DefaultWebProxy = p;
WebClient client = new WebClient();
string downloadString = client.DownloadString("http://www.google.com");
Run Code Online (Sandbox Code Playgroud)
但出现以下错误:"需要代理身份验证".我无法使用默认代理,因为我的代码是在没有默认代理设置的特殊帐户下从Windows服务运行的.所以,我想在我的代码中指定所有代理设置.请告诉我如何解决此错误.
我正在使用ember和express over node设计一个网站.它在服务器中运行,例如:SERVER_1.
我在另一台服务器上运行的web服务很少,比如说:SERVER_2.
那是:
SERVER_1中的网站和SERVER_2中提供的Web服务
SERVER_1位于代理服务器后面.我试图从SERVER_1访问webservices:
SERVER_1 =====[PROXY]===> SERVER_2
Run Code Online (Sandbox Code Playgroud)
当我从SERVER_1进行AJAX webservice调用时,我收到:
NetworkError: 500 Internal Server Error
Run Code Online (Sandbox Code Playgroud)
但是,我能够通过浏览器成功检索值.只有通过AJAX代码,我才检索到网络500错误.
另外,为了测试,我删除了我的代理服务器设置:
SERVER_1 =====> SERVER_2
Run Code Online (Sandbox Code Playgroud)
我能够通过AJAX代码和浏览器成功访问所有这些Web服务.
如果我之间有代理服务器:
SERVER_1 =====[PROXY]===> SERVER_2
Run Code Online (Sandbox Code Playgroud)
我收到了 - NetworkError:500内部服务器错误
我想知道从代理服务器后面运行的网站访问第三方Web服务的过程?
附加信息:
已经修复跨域Web服务访问问题(在一个服务器上运行的网站和在不同端口的其他一些服务器上运行的webservices),我使用的是http-proxy npm,我的代码如下:
var express = require('express');
var routes = require('./routes');
var http = require('http');
var path = require('path');
var httpProxy = require('http-proxy');
var endpoint = {
host: 'IP_ADDRESS_WHERE_MY_WEBSERVICES_RUN',
port: 80,
prefix: '/api'
}
var proxy = new httpProxy.RoutingProxy();
var app = express();
app.set('port', process.env.PORT || …Run Code Online (Sandbox Code Playgroud) System.Net.IWebProxy的可用实现是什么(来自System.Net.Primitives,DNX Core)?根据应用程序的要求,唯一的框架可以在dnxcore50中使用,那么什么是包含代理实现的正确的NuGet包?
解决此类问题的正确方法是什么?相关功能似乎分为十几个包.
我有一个支持CLR的.NET应用程序访问Web服务并将xml文件写入Web服务器以供SQLServer SSIS包消化.在开发服务器上一切正常,但生产服务器返回以下错误:
创建在"system.net/defaultProxy"配置部分中指定的Web代理时出错:在System.Net.HttpWebRequest..ctor处的System.Net.WebRequest.get_InternalDefaultWebProxy()处的System.Net.Configuration.DefaultProxySectionInternal.GetSection()处(Uri uri,ServicePoint servicePoint)位于System.Net.Ser.服务上的System.Net.HttpRequestCreator.Create(Uri Uri)System.Web.WebRequest.Create(Uri requestUri,Boolean useUriBase),System.Net服务.ProtWeb.WebClientProtocol.GetWebRequest(Uri uri)在System.Web.Services.Protocols.HttpWebClientProtocol.GetWebRequest(Uri uri)at System.Web.Services.Protocols.SoapHttpClientProtocol.GetWebRequest(Uri uri)at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName,Object [在UserDefinedFunctions.LoadDMSFile的MyDBProj.com.dmsintegration.secure.VehicleInventoryService.RetriveVehicleInventory(RetrieveAllRecordsRequest请求)中的参数)(String dealer_id,String dms_username,String dms_password,String dms_location_id)
服务器操作系统版本或SQLServer版本之间没有区别.我们正在使用Windows Server 2003 R2和SQL Server 2005.我认为它必须是服务器本身的配置,但我找不到服务器之间的任何差异.两台服务器都没有运行软件防火墙.
完全例外:
System.Configuration.ConfigurationErrorsException:创建"system.net/defaultProxy"配置部分中指定的Web代理时出错.---> System.DllNotFoundException:无法加载DLL'rasapi32.dll':动态链接库(DLL)初始化例程失败.(来自HRESULT:0x8007045A的例外)
System.Net.UnsafeNclNativeMethods.RasHelper.RasEnumConnections(RASCONN [] lprasconn,UInt32&lpcb,UInt32&lpcConnections)在System.Net.UnsafeNclNativeMethods.RasHelper.GetCurrentConnectoid()处于System.Net.AutoWebProxyScriptEngine.AutoDetector.在System.Net.Configuration的System.Net.Configuration.DefaultProxySectionInternal..ctor(DefaultProxySection部分)的System.Net.WebProxy.UnsafeUpdateFromRegistry()处的System.Net.AutoWebProxyScriptEngine..ctor(WebProxy代理,布尔useRegistry)初始化() .DefaultProxySectionInternal.GetSection()---内部异常堆栈跟踪的结束---位于System.Net.HttpWebRequest..ctor处System.Net.WebRequest.get_InternalDefaultWebProxy()的System.Net.Configuration.DefaultProxySectionInternal.GetSection()处( System.Web.Services.Protocols.WebClientProtocol.GetWe上System.Net.WebRequest.Create(Uri requestUri,Boolean useUriBase)的System.Net.HttpRequestCreator.Create(Uri Uri)上的Uri uri,ServicePoint servicePoint)bRequest(Uri uri)at System.Web.Services.Protocols.HttpWebClientProtocol.GetWebRequest(Uri uri)at System.Web.Services.Protocols.SoapHttpClientProtocol.GetWebRequest(Uri uri)at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke( UserDefinedFunctions.LoadDMSFile上的MyDBProj.com.dmsintegration.secure.VehicleInventoryService.RetriveVehicleInventory(RetrieveAllRecordsRequest请求)中的String methodName,Object [] parameters)(String dealer_id,String dms_username,String dms_password,String dms_location_id)
我试图让Fiddler使用RestSharp女巫使用System.Http.WebProxy,所以我希望它被设置为localhost:8888或127.0.0.1:8888
这是代码:
var webProxy = new WebProxy(new Uri("http://127.0.0.1:8888"))
{
BypassProxyOnLocal = false
};
var bypassed = webProxy.IsBypassed(new Uri("http://127.0.0.1"));
Console.WriteLine(bypassed);
Run Code Online (Sandbox Code Playgroud)
输出:true
MSDN声明如下:
该IsBypassed方法用于确定是否要访问因特网资源时绕过代理服务器.
BypassProxyOnLocal和BypassList属性控制IsBypassed方法的返回值.
在以下任何条件下,IsBypassed都返回true:
如果BypassProxyOnLocal为true且host是本地URI.本地请求通过URI中缺少句点(.)来标识,如"http:// webserver /"中所示.
如果host匹配BypassList中的正则表达式.
如果Address为null.
所有其他条件都返回false.
我不明白为什么在我的情况下它返回true,这是一个错误吗?如何让它工作呢?谢谢!
我的问题来自我在企业网络上发现的一个问题.我正在使用Windows 8进行开发,因此在我的情况下IE10设置为自动检测代理设置.
在我的C#app中,我使用System.Net.Http.HttpClient.我发现如果我离线,发出失败的请求然后重新联机,我的整个过程的默认IWebProxy对象将变得无法使用.提出失败的请求很重要,否则没有问题.这是一个如何处理这个脆弱的代理对象的例子.
var defaultHandler = new HttpClientHandler();
var fragileProxy = defaultHandler.Proxy;
var httpClient = new HttpClient(defaultHandler);
Run Code Online (Sandbox Code Playgroud)
经过一些实验,我发现我可以通过调用System.Net.WebProxy.GetDefaultProxy()获得一个工作代理;
然后我实现了一个NetworkChangAwareProxy:IWebProxy.那是对的,我的IWebProxy的代理.在内部,只要NetworkChange.NetworkAddressChanged,它就会获得一个新的WebProxy.GetDefaultProxy().
我在应用程序启动时将其连接起来并且问题消失了.
WebRequest.DefaultWebProxy = new NetworkChangeAwareProxy();
Run Code Online (Sandbox Code Playgroud)
希望有人会告诉我有更好的方法来解决这个问题.我的具体问题是关于Application Store Style Apps.(地铁应用)
System.Net.WebProxy.GetDefaultProxy()不可用,System.Net.HttpWebRequest.DefaultWebProxy在离线并返回后只返回相同的已解除代理.
如何在C#Windows应用商店应用中获取新IWebProxy对象的句柄?
假设我有一个名为/ getdata的接口的asp.net mvc 3应用程序,不同的用户通过我的PC客户端软件连接到服务器并使用此接口获取私有数据.不同的用户通过他们自己的良好加密的令牌来识别.
现在的问题是ClientA告诉我们他得到了另一个用户的数据.从ClientA的日志中我们发现他得到了ClientB(但他们彼此不认识,他们不能共享帐户).我查看了我的Web应用程序的代码,但没有找到任何机会混合他们的数据.
所以我想知道这会发生:
(1)ClientB 通过Web代理在http标头中使用他的令牌向http://mysite.com/getdata发起http请求.
(2)Web代理访问我的Web服务器,获取ClientB的数据.
(3)我的Web服务器批准请求并返回ClientB的数据,因为一切正确.
(4)ClientB获取他的数据并正确显示
(5)在ClientB获取数据后几乎同一时间,ClientA启动相同的请求,并在标头中添加ClientA的令牌.
(6)Web代理找到ClientA请求的URL与ClientB相同,结果仍在缓存中,然后返回ClientB的数据.然后ClientA获取另一个数据.
在我的Web应用程序界面中,在开始时我已经设置了所有响应no-cache,max-age = 0等等以防止客户端缓存.我的问题是:
图像中的scanario可以发生吗?
如果是,我如何阻止Web代理返回缓存数据?我无法修改PC客户端的程序,并且Web代理服务器不受我的控制.
如果不是,A获得B数据的可能原因是什么?