代码之家  ›  专栏  ›  技术社区  ›  Hemant

从代理服务器后面调用Web服务

  •  9
  • Hemant  · 技术社区  · 15 年前

    我需要在将使用web服务(XMLSOAP服务)的应用程序(C#)中添加一个功能。

    我知道SOAP服务使用HTTP协议,因此应该使用端口80,该端口通常保持打开状态。应用程序可以在不使用任何特殊编码的情况下使用web服务,或者我需要编写特殊代码来检测代理设置或您看到的其他一些问题,这对吗?

    编辑:Webservice是internet上公开提供的服务。它不在同一个网络上。

    6 回复  |  直到 15 年前
        1
  •  10
  •   AaronS    15 年前

    如果确实需要通过某种代理,只需将以下内容添加到web.config:

      <system.net>
        <defaultProxy>
          <proxy  proxyaddress="http://yourproxyserver:80" />
        </defaultProxy>
      </system.net>
    

    您也可以通过使用以下代码来完成:

    WebRequest.DefaultWebProxy = new WebProxy("http://yourproxyserver:80/",true);
    
        2
  •  8
  •   bluish dmajkic    12 年前

    您可以使用本地计算机的默认设置:

    System.Net.ServicePointManager.Expect100Continue = false; 
    wsclient.Proxy=  System.Net.HttpWebRequest.GetSystemWebProxy();
    wsclient.Proxy.Credentials = CredentialCache.DefaultCredentials;     
    

    并在app.config中添加此配置:

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      <system.net>
        <settings>
          <servicePointManager expect100Continue="false" />
        </settings>
      </system.net>
    </configuration>
    
        3
  •  7
  •   Hemant    15 年前

    因此,它实际上深入到向用户询问代理服务器详细信息,然后为代理服务器配置服务代理类,如下所示:

    var networkCredentials = new NetworkCredential ("username", "password", "domain");
    WebProxy myProxy = new WebProxy ("W.X.Y.Z:NN", true) {Credentials = networkCredentials};
    var service = new iptocountry { Proxy = myProxy };
    string result = service.FindCountryAsString ("A.B.C.D");
    

    我编写了一个测试类,它使用 IP To Country

    使用上面的代码,我可以成功地使用web服务。

        4
  •  5
  •   Marc Gravell    15 年前

    proxycfg -u
    

    从用户的IE代理设置(WinInet)导入设置。

    在Vista/etc上,您使用

    netsh winhttp
    

    (还有一些子命令,如“import”)

    未经测试,但请尝试:

    netsh winhttp import proxy source=ie
    

    在此之后,您的.NET代码应该都通过代理工作,该代理可能已经配置好,以便使用IE等。

        5
  •  -1
  •   jgallant    15 年前

    如果您的Web服务与调用Web服务的客户端位于同一个内部网络上,那么它不应该通过代理。

        6
  •  -1
  •   Eric Petroelje    15 年前

    只要允许web流量(端口80)通过,就不需要做任何特殊的事情。从路由器/代理服务器的角度来看,web服务调用与任何其他HTTP流量相同。