任何建议/解决方案/提示将不胜感激。
我正在使用 PowerBuilder 12.5 来调用 .Net Web 服务,并且该调用有效,并由发送有效 XML 响应的 WS 接收,但 PB 加载时的响应对象为空。
代理项目使用 .Net 选项来生成 PB 代理。一些 WS 方法工作正常,并且响应对象可以在 PB 代码中访问,但是当调用其他一些 WS 方法时,即使响应 XML 正确并且包含预期值(使用提琴手捕获),分配用于保存 WS 方法响应的 PB 对象为空)。在视觉检查中,由 PB 生成的代理似乎与 WSDL 定义相匹配。
我需要能够在代码中检查 WS 方法调用的响应,以便应用程序在失败时可以采取适当的措施。
WSDL 是: http ://cbre.truelogic.com.au/service.asmx?WSDL
PB 代码示例:
相同的 WS,第一个方法调用GroupInsert()
有效,但尽管第二个方法调用ContactBulkImportWithGroups()
有效,PB 无法解释方法响应并加载响应对象(即使响应 XML 是正确的)。
// Web Service = lws_cl, already created earlier in script.
// Get Group ID - This WS method call works
wspn_campaignlogic_group ln_ret_group
decimal ldc_groupID[1]
ln_ret_group = lws_cl.GroupInsert(ls_groupName)
if isValid(ln_ret_group.GroupResults) then
if ln_ret_group.GroupResults.ResultCode = 1 then
ldc_groupID[1] = ln_ret_group.GroupID
end if
end if
// Contacts - This WS method returns null
wspn_campaignlogic_contactbulkimporter ln_ret_contact
any la_xml
ln_ret_contact = create wspn_campaignlogic_contactbulkimporter
la_xml = '<contacts><c><f>Jill</f><l>Jackson</l><e>jj@yahoo.com</e><comp>Acme Solutions</comp><sal></sal><p>(02) 8080 1111</p><m></m></c></contacts>'
ln_ret_contact = lws_cl.ContactBulkImportWithGroups(3, ldc_groupID, la_xml, "dd/mm/yyyy")
// Check results
if NOT isValid(ln_ret_contact) then
// Error - execution goes in here because ln_ret_contact is null so result cannot be checked by code
else
// OK
end if
XML 响应:由 Fiddler 捕获:
HTTP/1.1 200 OK
Date: Fri, 06 Jul 2012 04:39:42 GMT
Server: Microsoft-IIS/6.0
X-UA-Compatible: IE=8
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
Cache-Control: private, max-age=0
Content-Type: text/xml; charset=utf-8
Content-Length: 688
<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><ContactBulkImportWithGroupsResponse xmlns="http://new.cl.truelogic.com.au/"><ContactBulkImportWithGroupsResult><ImportResults><InvalidContacts><contacts xmlns=""></contacts></InvalidContacts><Updated>1</Updated><Inserted>0</Inserted></ImportResults><ContactImportResults><ResultCode>1</ResultCode><ResultDescription>Success.</ResultDescription></ContactImportResults></ContactBulkImportWithGroupsResult></ContactBulkImportWithGroupsResponse></soap:Body></soap:Envelope>