貓用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連接。 |
-- 分享給大家 加菲貓:-)
