php调用webservice问题

LiveAsaMonster 2012-09-20 04:52:22
小弟最近在做跟外部项目接口时需要调用对方提供的webservice,Fault occurred while processing报这样一个错,谷姐之后说是传入的字符为空导致的,下面是传入的xml数据
<?xml version="1.0" encoding="UTF-8"?>
<processSP><wmsSecurityInfo><username>40222</username><password>flux22</password></wmsSecurityInfo><wmsParam><customerid>GXG</customerid><messageid>106D</messageid><stdno>SO</stdno><warehouseid>GXG_WMS</warehouseid><param>1209200001346</param></wmsParam></processSP>
,按说没有空值呀。。又想是不是xml的UTF-8格式导致的,顺便问下这样一个UTF-8格式的xml字符串,如何改变编码?($iconv_str = iconv('UTF-8', 'GBK', $str);php的这个函数不行)但这或许不是根本原因,还请大神指点,下面是我调用的代码以及webservice提供的说明

$str = array2xml($data,'processSP');
$iconv_str = iconv("UTF-8", "GBK", $str);


$soap_client = new SoapClient('http://192.168.1.9:8081/datahubWeb/WMSSOAP2/WSERPService/ERP/Service3?wsdl');
$soap_result = $soap_client->processSP($iconv_str);


<wsdl:operation name="processSP">
<wsdl:input message="tns:processSP" name="processSP"></wsdl:input>
<wsdl:output message="tns:processSPResponse" name="processSPResponse"></wsdl:output>
</wsdl:operation>


...全文
139 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
LiveAsaMonster 2012-09-20
  • 打赏
  • 举报
回复
求大神指点啊
LiveAsaMonster 2012-09-20
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

SOAP 默认都是 utf-8 编码的
WSDL 并没有说 processSP 是 XML 串

你最好先与对方沟通一下
[/Quote]这个前期都有沟通,是XML格式的,我把他们完整的报文格式发出来

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.webservices.services.adapter.datahub/">
<soapenv:Header/>
<soapenv:Body>
<ws:processSP>
<!--Optional:-->
<wmsSecurityInfo>
<!--Optional:-->
<password>PWD</password>
<!--Optional:-->
<username>USER</username>
</wmsSecurityInfo>
<!--Optional:-->
<wmsParam>
<!--Optional:-->
<customerid>XXXXX</customerid>
<!--Optional:-->
<messageid>8888</messageid>
<!--Zero or more repetitions:-->
<param>1234534</param>
<!--Optional:-->
<stdno>SO</stdno>
<!--Optional:-->
<warehouseid>XXXX</warehouseid>
</wmsParam>
</ws:processSP>
</soapenv:Body>
</soapenv:Envelope>

我现在已经按他的格式拼了一个完整的格式过去,还是在调用那一行报错

$soap_result = $soap_client->processSP($req_data);//Fault occurred while processing.

xuzuning 2012-09-20
  • 打赏
  • 举报
回复
SOAP 默认都是 utf-8 编码的
WSDL 并没有说 processSP 是 XML 串

你最好先与对方沟通一下

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧