【发布时间】:2011-11-17 01:55:53
【问题描述】:
我通常不处理 VBScript 和经典 ASP,但我必须对我们的一个旧网站进行一些更改。
我使用 SOAP Web 服务来获取字符串值数组,但是当我尝试从经典 ASP 代码中使用它时,它告诉我它是一个对象
该服务有效,它返回一个字符串数组,代码是正确的,我只需要知道如何将它从一个对象更改为我认为的字符串。
Web 服务 WSDL:
<xs:element name="getProductFunctionsResponse">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" minOccurs="0" name="return" nillable="true" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
错误
对象不是集合
经典的 ASP 代码:
result2 = soap.getProductFunctions("AEDO")
i = 0
For Each present In result2
If mid(user_auth_key,i,1) = 1 Then
response.write("success")
End If
response.write(present)
response.write("<br />")
i = i+1
Next
【问题讨论】:
-
VBScript 是脚本语言,因此无法执行类型转换,因此问题可能比您想象的更严重。首先,让我们调试一下:当您拥有
Response.Write(result2)时,您会得到什么?Response.Write(CStr(result2))呢?最后是Response.Write(TypeName(result2))?请让我们知道每个的输出,它可能会对问题有所帮助。 -
+1 暗影法师。我猜类型名称是
String()而VBScript 无法处理它。 (如果我没记错的话)@David 您可以再添加一个可选参数以向后兼容您的 Web 服务。如果是classic-asp,您的Web 服务将返回一个分隔字符串而不是array of string。你可以在经典的 asp 中拆分返回值,所以它是可迭代的。 -
大家好,感谢您的回复,我将在大约一个小时后查看此内容并报告我的进度。
标签: web-services vbscript asp-classic