请教各位:
首先,我明白PHP可以使用soapclient 生成实例 调用.NET中暴露的接口方法。PHP代码如下:
$client = new soapclient("http://123.456.78.9/websvclient/Service.asmx?WSDL",'wsdl');
$aryPara = array('strAccount'=>'admin' ,'strPassword'=>'pass');
/*
* @return: webservice result
* @param 1: webservice method
* @param 2: Account and password
*/
$result = $client->call('OfferList', $aryPara);
上述代码对应的.NET写法是(本人不懂.NET)
// 实例化对象 并获取订单的XML字符串
ServiceReference1.CollectionServiceSoapClient obj = new ServiceReference1.CollectionServiceSoapClient();
System.Xml.XmlElement xml = obj.OfferList("admin".ToString(), "pass".ToString()); PHP向.NET的webservice发送请求,.NET中接口方法的参数是分别写的,PHP中需要将参数当做一个数组。但如果.NET中某个参数是xml字符串,在PHP中怎么写才能正确发送请求呢?
.NET的客户端请求代码如下: ......................//此处省去dsNew内容代码若干行
string strXdoc = "";
// 把Dataset转换成XML字符串
strXdoc = dsNew.GetXml(); XmlDocument Xdoc = new XmlDocument();
Xdoc.LoadXml(strXdoc); //发送XMl到Webservice,找返回一个XML
XmlElement xmlSaveStatus = obj.OfferSave("admin".ToString(), "pass".ToString(),txtContactEmail.Value, Xdoc.DocumentElement);请教一下上述代码用PHP实现应该如何写,最关键的就是最后一个参数xml,PHP传参数时必写入数组,但是xml作为数组元素
却没有对应的键名,如
$aryPara = array('strAccount'=>'admin' ,'strPassword'=>'pass','txtContactEmail'=>'[email protected]','?'=>'?');
望各位大牛 不吝赐教 拜谢!
首先,我明白PHP可以使用soapclient 生成实例 调用.NET中暴露的接口方法。PHP代码如下:
$client = new soapclient("http://123.456.78.9/websvclient/Service.asmx?WSDL",'wsdl');
$aryPara = array('strAccount'=>'admin' ,'strPassword'=>'pass');
/*
* @return: webservice result
* @param 1: webservice method
* @param 2: Account and password
*/
$result = $client->call('OfferList', $aryPara);
上述代码对应的.NET写法是(本人不懂.NET)
// 实例化对象 并获取订单的XML字符串
ServiceReference1.CollectionServiceSoapClient obj = new ServiceReference1.CollectionServiceSoapClient();
System.Xml.XmlElement xml = obj.OfferList("admin".ToString(), "pass".ToString()); PHP向.NET的webservice发送请求,.NET中接口方法的参数是分别写的,PHP中需要将参数当做一个数组。但如果.NET中某个参数是xml字符串,在PHP中怎么写才能正确发送请求呢?
.NET的客户端请求代码如下: ......................//此处省去dsNew内容代码若干行
string strXdoc = "";
// 把Dataset转换成XML字符串
strXdoc = dsNew.GetXml(); XmlDocument Xdoc = new XmlDocument();
Xdoc.LoadXml(strXdoc); //发送XMl到Webservice,找返回一个XML
XmlElement xmlSaveStatus = obj.OfferSave("admin".ToString(), "pass".ToString(),txtContactEmail.Value, Xdoc.DocumentElement);请教一下上述代码用PHP实现应该如何写,最关键的就是最后一个参数xml,PHP传参数时必写入数组,但是xml作为数组元素
却没有对应的键名,如
$aryPara = array('strAccount'=>'admin' ,'strPassword'=>'pass','txtContactEmail'=>'[email protected]','?'=>'?');
望各位大牛 不吝赐教 拜谢!
解决方案 »
- 同时请求数据库,应该怎么处理,求解答
- php 新手问题
- PHP生成PDF文档
- 关于Zend Optimizer
- 求个正则:取出链接、图片路径、名称
- 【100分课题,水平中上等入】包含html标签的浏览器可视字符串截取函数,有点挑战哦
- 谁知道FCKEditor2.3里面PHP上传图片怎么搞?
- PHP实现点击导航菜单只改变下面内容模块
- Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in ...可以正确的得到结果,但是有warning!是什么
- 散完1000,打完收工
- PHP xmlhttp编码问题?请看代码!
- [分享]从dl('xxx.so');函数分析PHP模块开发
即直接访问 http://123.456.78.9/websvclient/Service.asmx?WSDL 得到的页面内容
<soap:Body>
<OfferSave xmlns="http://tempuri.org/">
<strEmail>string</strEmail>
<strPassword>string</strPassword>
<strOtherEmail>string</strOtherEmail>
<strcontactPhone>string</strcontactPhone>
<strPaymentCondition>string</strPaymentCondition>
<strComment>string</strComment>
<xml>xml</xml>
</OfferSave>
</soap:Body>
我把最后一个数组元素写为: 'xml'=>$xml
报错如下:Array ( [faultcode] => soap:Server [faultstring] => Server was unable to process request. ---> Object reference not set to an instance of an object. [detail] => )
["ds"]=>
array(3) {
[0]=>
object(SimpleXMLElement)#23 (3) {
["stone"]=>
string(7) "SH04778"
["discount"]=>
string(3) "-25"
["Status"]=>
object(SimpleXMLElement)#26 (1) {
[0]=>
string(1) " "
}
}
[1]=>
object(SimpleXMLElement)#24 (3) {
["stone"]=>
string(7) "SH04785"
["discount"]=>
string(3) "-17"
["Status"]=>
object(SimpleXMLElement)#27 (1) {
[0]=>
string(1) " "
}
}
[2]=>
object(SimpleXMLElement)#25 (3) {
["stone"]=>
string(7) "SH04790"
["discount"]=>
string(3) "-25"
["Status"]=>
object(SimpleXMLElement)#28 (1) {
[0]=>
string(1) " "
}
}
}
}
求解!谢谢!
服务端假如有两个参数($int,$xml)
客户端直接传参(array('1','<?xml ... ?>'))就可以了
<Query>xml</Query>
传递参数时用
$xml = simplexml_load_file('a.xml');
"Query"=>$xml不报错,但服务器上接受不到内容郁闷了。如果把"Query"=>"" 就会报错