2011-12-21 58 views
0

來自VB6的NET Web服務。在VB6中,我使用SoapClient30(MS SOAP類型庫)。反序列化VB6中的SOAP消息 - SoapClient30 MS SOAP類型庫

Web方法有此簽名:

[WebMethod] 
public List<List<string>> SomeMethod(string [] args){} 

它的返回XML在SOAP這樣的:

<?xml version="1.0" encoding="utf-8" ?> 
<ArrayOfArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://icz.sk/"> 
    <ArrayOfString> 
    <string>1</string> 
    <string>2</string> 
    <string>3</string> 
    <string>4</string> 
    <string>5</string> 
    </ArrayOfString> 
    <ArrayOfString> 
    <string>1</string> 
    <string>2</string> 
    <string>3</string> 
    <string>4</string> 
    <string>5</string> 
    </ArrayOfString> 
</ArrayOfArrayOfString> 

對於SoapClient30的初始化我使用WSDL。

當我調用Web方法在上面我在VB6得到這個異常:

SoapMapper:Restoring data into SoapMapper ArrayOfString failed HRESULT=0x8007000E 

SoapMapper:Restoring data into SoapMapper SomeMethod failed HRESULT=0x8007000E 

Client:Unspecified client error. HRESULT=0x8007000E: 

我覺得SoapClient30不知道VB6代碼反序列化XML響應。

我嘗試在變式中保存web方法結果。

Private proxy As SoapClient30 
Dim result As Variant 
Dim input_param(0 To 2) As String 

proxy.MSSoapInit WSDL_PATH 

input_param(0) = arg1 
input_param(1) = arg2 
input_param(2) = "" 

result = proxy.SomeMethod() 

什麼是需要改變響應格式的web方法或類型的存儲響應在VB6中?

我必須使用SOAP類型庫我可以使用COM。感謝您的回覆

+0

只是出於好奇多少內存怎麼辦你有你的機器..?聽起來像內存問題..我可能是錯誤的嘗試去任務管理器和尋找以下任何w3wp.exe或XP的工作進程的「aspnet_wp.exe ..結束那裏任務..重新啓動機器,並重新開始應該工作..如果不是那麼你可能有一個代理類,你正在使用或創建的問題.. – MethodMan 2011-12-21 16:28:51

回答

1

SoapClient庫已過時,不應使用。

幸運的是,它不是您在VB6代碼中使用Web服務的唯一選擇。 VB6可以使用任何合理的COM組件。我建議你在C#中創建一個COM組件來使用你的服務。您可以使用普通的「添加服務引用」來使用服務,然後將服務調用作爲COM對象上的方法公開。

這樣,你唯一過時的代碼就是VB6本身。

+0

Saundres。謝謝你的意見。我知道SOAP類型庫是舊學校,但我必須使用它。恕我直言問題是在SOAP響應的格式。我想知道什麼SOAP格式是可以接受的VB6和SOAP類型庫 – Mike 2011-12-21 18:12:58

+0

這不是「老派」,它已經過時並且不受支持,爲什麼「必須」使用它?我的建議有什麼問題? – 2011-12-21 19:38:54

0

VB6是真的老了,而不是方法本身,在我的情況下,web服務工作,我做的web服務直接調用,在這裏看看Problems with Visual Basic 6.0 and MagentoSoap那麼你可以從字符串更改爲自定義對象