我对生成的Web服务代理类有疑问。基本上我已经尝试添加一个Web服务引用到我的解决方案,但我不能因为丢失的discorvery文件,所以我做了很多ppl说在互联网上通过生成一个代理类与WSDL然后instatiate它和用它。
所以基本上我有一个很好的代理类,但是我如何使用它,当然我可以立即调用它并调用方法但是它现在如何连接到互联网上某些服务器上的实际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 ......
但是在我的课程中,我将它作为带有'localhost'网址的构造函数,但是Web服务正在其他服务器上运行,所以是的,我无法连接是正常的。
public AuthenticationService() {
this.Url = "http://localhost:8080/alfresco/api/AuthenticationService";
}
但我现在怎样才能正确使用它?
我应该将此网址设置为wsdl文件的原始网址吗?
这样的事情:http://internetserver:8080/alfresco/api/AuthenticationService.wsdl
?这样做会返回给我wsdl文件但不是结果,我得到错误。尝试别的东西我得到了404 ......
有任何想法吗?
答案 0 :(得分:1)
如果您希望能够连接到另一台服务器上运行的服务,则需要将URL行为更改为动态 - 请参阅此文章:
http://www.codeproject.com/Articles/12317/How-to-make-your-Web-Reference-proxy-URL-dynamic
这将允许您通过更改配置文件来引用在不同URL上运行的同一Web服务。
答案 1 :(得分: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>