繁体   English   中英

如何为服务引用指定Web代理?

[英]How to Specify a Web Proxy for a Service Reference?

我在http://chennaiemergency.co.in/sree/s2.php?wsdl上发现了一个简单的在线Web服务,我可以通过SOAP UI使用2个浮点值(1,1)调用,并轻松获得1内的响应-2秒。 现在,在一个新的visual studio 2010控制台应用程序项目中,我“添加服务引用”并提供WSDL。 然后在生成的客户端中我这样做:

    ServiceReference1.ChnEmergencyPortTypeClient client = new ChnEmergencyPortTypeClient();
    string hospital = client.hospital(1, 1);

我在1分钟后得到超时异常。 我确实禁用了防火墙。 我正在使用Windows7x64我通过代理服务器使用互联网。

我通过添加Web引用尝试了同样的事情,但我得到了相同的超时错误。

现在在Web参考实现中,我做了以下几点修改:

            WebProxy webProxy = new WebProxy("<my proxy server name>", <port>);

            ChnEmergency client = new ChnEmergency();
            client.Timeout = 200000;
            client.Proxy = webProxy;
            string hospital = client.hospital(1, 1);

但我还是暂停了。 我遗失的任何建议?

我使用直接(通过电话)内部连接进行了快速测试,该连接不涉及代理服务器。 我能够成功访问。 这表明我提供webproxy的方式有问题。 IE互联网设置表明我的代理设置是:

地址:abccom港口:80

所以我正在构建像这样的webproxy

WebProxy webProxy = new WebProxy("a.b.c.com", 80);

现在我不知道某处是否有某种“安全的http”概念,我也不知道如何弄明白。 但是使用http:// abccomhttps:// abccom快速尝试浏览器产生不同的结果。 在“http”的情况下,我得到了无效的网址。 在“https”中,错误是“Google Chrome与abccom的连接尝试被拒绝。网站可能已关闭,或者您的网络可能未正确配置”

如果我将webproxy与https一起使用,则表示“服务点管理器未配置为https”

我用fiddler查看活动,我看到请求确​​实出现在fiddler中。 但没有回应。 这是否意味着请求正在通过? 或者请求可以在较低级别被阻止(即,在它通过提琴手之后)。

我试图快速制作一个小型的Web项目,它似乎工作正常,但你添加webservice的方式,它返回xml像这样:

<?xml version="1.0" encoding="ISO-8859-1"?>    
  <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
    <SOAP-ENV:Body>    
      <ns1:hospitalResponse xmlns:ns1="urn:ChnEmergency">    
        <return xsi:type="xsd:string">12.944672~80.134578~Chrompet GH~Government~GST Road, Chrompet~Chrompet~600036</return>
      </ns1:hospitalResponse>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

如果您的代理需要密码,您可以尝试:

var proxy = new WebProxy("proxy.foo.com", 8080);
proxy.Credentials = new NetworkCredential("user", "pass");
WebRequest.DefaultWebProxy = proxy;

事实证明,我正在使用的代理,proxyA,是通过另一个代理,proxyB重定向。 使用proxyB直接解决了这个问题。 我被其他人告知了这一点,并没有弄明白自己。 我使用了代理对象,如WebProxy webProxy = new WebProxy(“proxyB.com”,80)。 所以问题没有解决,但现在解决了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM