解决SOAPCLIENT访问WebSerivce外网发布端口
猫用vs2010写了一个webservice,并写了一个盘点程序客户端,
PDA盘点机用C#开发,笔记本用VFP开发,发布在本地局域网IIS服务器,用了两年一直很稳定。后面仓库搬迁,需要外网进行访问,在路由器上设置端口映射1008。
MSsoapInit 将URL网址改成 http://外网IP:1008/netbookserver/Service.asmx?wsdl
结果一直报错,无法访问,
用端口查看工具,发现客户端一直访问的是80端口,后面不得已采用临时解决方案,每台笔记本做好本地端口映射。
盘点程序配置文件改成 http://外网IP:80/service.asxm?wdsl
ProtMap程序将127.0.0.1:80 映射为外网IP:1008 还是很不稳定,但起码能用。
翻阅很多资料,发现问题出在EndPoint上面,但一直不得其法,今天终于找到SoapClient 修改EndPoint在哪里了
代码如下
oSOAP=Createobject("MSSOAP.soapclient30")
oSOAP.MSSoapInit("外网IP","Service","ServiceSoap")
oSOAP.ConnectorProperty("EndPointURL")="外网IP:1008/netbookserver/Service.asmx?wsdl"
oSOAP.服务器上函数()
下面的表格提供了一个属性清单
属性 | 描述 |
AuthPassword | 端点认证用的口令。 |
AuthUser | 端点认证用的用户名。 |
EndPointURL | 端点的URL。 |
ProxyPassword | 代理认证的口令。 |
ProxyPort | 代理服务器使用的端口。 |
ProxyServer | 代理服务器的主机名或IP地址。 |
ProxyUser | 代理认证的用户名。 |
SoapAction | HTTP头部中SoapAction中的值。这一属性只能从低级的API中设定,如果使用SoapClient接口中的ConnectorProperty属性(高级API)设置该属性,它就会被忽略。 |
SSLClientCertificateName | 如果存在,则该字符串标明用于SSL协议中的客户端证书。其语法为: SSLClientCertificateName [CURRENT_USER | LOCAL_MACHINE\[store-name\]]证书名,其缺省的名字为 CURRENT_USER\MY。 |
Timeout | HttpConnector的超时时间,这一时间是以毫秒计算的。 |
UseProxy | 一个类型为布尔型的属性,表明是否使用代理服务器。缺省情况下,这一属性的值被设定为False,表明无需使用代理服务器。如果要使用代服务器,需要将该属性的值设置为True。如果将该属性的值设置为True, 而又没有设置ProxyServer属性,HttpConnector将使用IE中设置的代理服器。HttpConnector会忽略IE中的“不使用代理服务器”设置。 |
UseSSL | 表明是否使用了SSL的布尔型值。如果该属性被设置为True,则无论WSDL中是否指定了HTTP或HTTPS,HttpConnector对象都使用SSL连接。 如果该属性的值被设置为False,则只有在WSDL中指定了HTTPS的情况下, HttpConnector对象才会使用SSL连接。 |
-- 分享给大家 加菲猫:-)
VFP祺佑三层开发框架,是VFP界第一款可以应用于开发CS、BS、APP、小程序、公众号的全功能开发框架。了解更多,请访问http://www.sn58.cn