通过pb自动生成的代理,来访问sap webservice的时候,提示不明错误。
而通过SoapUI测试,webservice服务是正常的,故觉得通过自己组报文的形式,通过http来访问webservice服务。
SoapUI的Request Editor窗口的Raw显示的是http的header需要设置的内容,xml显示的是body的内容。
剩下的工作和其他的http调用一样了。
//设置Header
//g_httpclient.SetHeader("Content-Type","application/soap+xml")
g_httpclient.SetHeader("action","urn:sap-com:document:sap:rfc:functions:ZIFWS_MAIN_INBOUND:ZIFFM_MAIN_INBOUNDRequest")
//组装报文
xmlnode_root = req_xmldoc.addchild("soap:Envelope")
xmlnode_root.SetAttribute("xmlns:soap","http://www.w3.org/2003/05/soap-envelope")
xmlnode_root.SetAttribute("xmlns:urn","urn:sap-com:document:sap:rfc:functions")
xmlnode_root.addchild("soap:Header")
xmlnode_root = xmlnode_root.addchild("soap:Body").addchild("urn:ZIFFM_MAIN_INBOUND")
ls_reqjson1 = '{"ZINTR_OO":"'+ls_vname+'","ZSYST_LOGI":"ZHZS800","ZINTR_SEQ":"SAP000001","ZKEY_ARR":"M01"}'
xmlnode_temp = xmlnode_root.addchild("IM_CTRL")
xmlnode_temp.settext(ls_reqjson1)
ls_reqjson2 = '{"DATA1":{"DATA":[{"ZDATE":"'+string(today(),"yyyymmdd")+'"}]}}'
xmlnode_temp = xmlnode_root.addchild("IM_DATA")
xmlnode_temp.settext(ls_reqjson2)
//post调用
rsp = g_httpclient.request(enums.HTTP_METHOD_POST,req_xmldoc.Serialize(),"application/soap+xml")
//获取返回数据
rsp_xmldoc = rsp.GetDataXML()