0

我对为 Web 服务生成的代理类有疑问。基本上我已经尝试向我的解决方案添加一个 Web 服务引用,但我不能因为缺少 discorvery 文件,所以我做了很多人在互联网上说的那样,通过使用 WSDL 生成代理类,然后将其实例化用它。

所以基本上我有一个很好的代理类,但是我如何使用它,当然我可以实例化它并调用方法但是它现在如何连接到互联网上某些服务器上的实际 Web 服务?

如果您查看 wsdl 文件,您会发现例如:

 <wsdl:service name="AuthenticationService">
  <wsdl:documentation>Provides simple authentication capability.</wsdl:documentation> 
   <wsdl:port binding="auth:AuthenticationServiceSoapBinding" name="AuthenticationService">
  <wsdlsoap:address location="http://localhost:8080/alfresco/api/AuthenticationService" /> 
  </wsdl:port>
  </wsdl:service>

它重定向到所请求的网络服务器等的本地主机等......

但是当在我的课堂上,我将它作为带有'localhost' url 的构造函数,但是 Web 服务正在其他服务器上运行,所以是的,我无法连接是正常的。

public AuthenticationService() {
    this.Url = "http://localhost:8080/alfresco/api/AuthenticationService";
 }

但是我现在如何正确使用它呢?

我应该将此网址设置为 wsdl 文件的原始网址吗?类似的东西:http://internetserver:8080/alfresco/api/AuthenticationService.wsdl?这样做会返回我的 wsdl 文件,但不会返回结果,我会收到错误。尝试其他东西我得到 404 结果....

有什么想法吗?

4

2 回答 2

1

如果您希望能够连接到在另一台服务器上运行的服务,那么您需要将 URL 行为更改为动态 - 请参阅这篇文章:

http://www.codeproject.com/Articles/12317/How-to-make-your-Web-Reference-proxy-URL-dynamic

这将允许您通过更改配置文件来引用在不同 URL 上运行的相同 Web 服务。

于 2013-03-19T08:42:01.473 回答
1

我的经验有限,但我为 Apple 的 GSX 服务添加了一次 Web 服务参考。它在我的 web.config 中添加了以下内容,我假设这是客户端对象的连接方式:

<client>
  <endpoint address="https://gsxws2.apple.com/gsx-ws/services/emea/iphone" binding="basicHttpBinding" bindingConfiguration="GsxWSEmeaIPhoneBinding" contract="AppleGSX.GsxWSEmeaIPhonePort" name="GsxWSEmeaIPhonePort"/>
</client>
于 2013-03-19T08:51:52.687 回答