RMB500元求解决PHP调用.net的webservice传递XML对象参数问题 本帖最后由 rznqp 于 2011-12-31 09:14:35 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我觉得你可以试试传递相关xml字符串。因为参数一般只能是数组或字符串。 最后传递都是字符串。但他要求是有xml格式并且是符合xml变量类型的。 你可以看他那query对象的xml定义。 定义是:<s:element minOccurs="0" maxOccurs="1" name="Query">- <s:complexType mixed="true">- <s:sequence> <s:any /> </s:sequence> </s:complexType> </s:element> 1、传递的 XML 应该是 XML 文本,而不是 XML 的二进制对象2、对方暴露的方法和参数类型,应该用soapClient::__getFunctions() 和 soapClient::__getTypes()查看,而不是直接分析 WSDL 来得到。因为实现原因,析出的结果可能不一样3、既然是 webservice,那就应该给出目标地址。这样才能让别人帮助你,而不是只是啃你嚼过的馒头 刚与盛大做个交接,免费让你看下下载个nusoaprequire_once('../co/snda/nusoap/nusoap.php'); // Create the client instance $client = new soapclient('http://jf.sdptest.sdo.com/ExchangeScore/exchangeservice.asmx?WSDL', 'wsdl'); $client->soap_defencoding = 'utf-8'; $client->decode_utf8 = false; $client->xml_encoding = 'utf-8'; $err = $client->getError(); if ($err) { echo '<h2>Constructor error</h2><pre>' . $err . '</pre>'; echo '<h2>Debug</h2><pre>' . htmlspecialchars($client->getDebug(), ENT_QUOTES) . '</pre>'; exit(); } // Call the SOAP method $param['merchantId'] = '140007'; $param['promotionID'] = 'haoyiding001'; $param['userId'] = 'test'; $param['merchantOrderId'] = '12045'; $param['amount'] = 0.01; $param['status'] = 2; $param['insertTime'] = date('Y-m-d H:i:s',strtotime('20111230140102')); $param['re'] = ''; $param['encryptCode'] = md5($param['merchantId'].'|'.$param['promotionID'].'|'.$param['userId'].'|'.$param['merchantOrderId'].'|'.$param['amount'].'|'.$param['status'].'|'.$param['insertTime'].'|'.$param['re'].'|365hcom'); $result = $client->call('InsertMerchantOrder', $param); print_r($result);die; 求助啊!mysql表传到服务器的数据库后不正常 自动创建二级目录 php公司哪个城市比较多? 问一个ADODB和mssql存储过程的问题 将文件从远程下载后不经硬盘保存,直接上传至另一服务器,怎么做啊 php生成大量静态页面如何解决效率问题 关于生成静态页面 哪位兄弟有”项目可行性分析“的模板 linux tcpdump怎么抓包 下面这种写法哪里有错呢 已知一個圖片的url,以及圖片的某部分的4個頂點的坐標(即:非整幅圖取出),能否在瀏覽器上取出該4點坐標對應的圖片? PHP小问题。
<s:element minOccurs="0" maxOccurs="1" name="Query">
- <s:complexType mixed="true">
- <s:sequence>
<s:any />
</s:sequence>
</s:complexType>
</s:element>
2、对方暴露的方法和参数类型,应该用
soapClient::__getFunctions() 和 soapClient::__getTypes()
查看,而不是直接分析 WSDL 来得到。因为实现原因,析出的结果可能不一样
3、既然是 webservice,那就应该给出目标地址。这样才能让别人帮助你,而不是只是啃你嚼过的馒头
下载个nusoaprequire_once('../co/snda/nusoap/nusoap.php');
// Create the client instance
$client = new soapclient('http://jf.sdptest.sdo.com/ExchangeScore/exchangeservice.asmx?WSDL', 'wsdl');
$client->soap_defencoding = 'utf-8';
$client->decode_utf8 = false;
$client->xml_encoding = 'utf-8';
$err = $client->getError();
if ($err) {
echo '<h2>Constructor error</h2><pre>' . $err . '</pre>';
echo '<h2>Debug</h2><pre>' . htmlspecialchars($client->getDebug(), ENT_QUOTES) . '</pre>';
exit();
}
// Call the SOAP method
$param['merchantId'] = '140007';
$param['promotionID'] = 'haoyiding001';
$param['userId'] = 'test';
$param['merchantOrderId'] = '12045';
$param['amount'] = 0.01;
$param['status'] = 2;
$param['insertTime'] = date('Y-m-d H:i:s',strtotime('20111230140102'));
$param['re'] = '';
$param['encryptCode'] = md5($param['merchantId'].'|'.$param['promotionID'].'|'.$param['userId'].'|'.$param['merchantOrderId'].'|'.$param['amount'].'|'.$param['status'].'|'.$param['insertTime'].'|'.$param['re'].'|365hcom');
$result = $client->call('InsertMerchantOrder', $param);
print_r($result);die;