【发布时间】:2012-07-06 06:49:40
【问题描述】:
任何建议/解决方案/提示将不胜感激。
我正在使用 PowerBuilder 12.5 调用 .Net Web 服务,并且调用有效,并且由发送有效 XML 响应的 WS 接收,但 PB 加载时的响应对象为空。
代理项目正在使用 .Net 选项生成 PB 代理。一些 WS 方法工作正常,并且响应对象可以在 PB 代码中访问,但是当调用其他一些 WS 方法时,即使响应 XML 是正确的并且包含预期值(使用提琴手捕获)。在视觉检查中,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>
【问题讨论】:
标签: .net web-services null powerbuilder