【发布时间】:2012-10-28 19:43:24
【问题描述】:
我正在尝试对 Web 服务进行肥皂调用以传递运输数据。这是我目前发送的请求:
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:ns1="http://weblabeling.gls-italy.com/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:enc="http://www.w3.org/2003/05/soap-encoding">
<env:Body>
<ns1:AddParcel env:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
<!-- bof shipping array --->
<XMLInfoParcel>
<Info>
<SedeGls>XXXX</SedeGls>
<CodiceClienteGls>XXXXX</CodiceClienteGls>
<PasswordClienteGls>XXXXXX</PasswordClienteGls>
<Parcel>
<CodiceContrattoGls>XXXXXX</CodiceContrattoGls>
<RagioneSociale>XXXXXX</RagioneSociale>
<!-- other stuff here -->
</Parcel>
</Info>
</XMLInfoParcel>
<!-- eof shipping array --->
</ns1:AddParcel>
</env:Body>
</env:Envelope>
这反而是 web 服务在问我的问题
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
<soap12:Body>
<AddParcel xmlns="http://weblabeling.gls-italy.com/">
<XMLInfoParcel>string</XMLInfoParcel>
</AddParcel>
</soap12:Body>
</soap12:Envelope>
我总是收到响应 xml 格式错误。
怎么了? 运输数组是正确的,并且与请求完全匹配。
提前致谢。
已编辑:
这是我构建 xml 的方式:
//inseriamo i dati nei corretti array
$Label = array(
'XMLInfoParcel' => array(
'Info' => array(
'SedeGls' => $SedeGls,
'CodiceClienteGls' => $CodiceClienteGls,
'PasswordClienteGls' => $PasswordClienteGls,
'Parcel' => array(
'CodiceContrattoGls' => $cod_cont,
'RagioneSociale' => $rag_soc,
'Indirizzo' => $delivery_indirizzo,
'Localita' => $delivery_city,
'Zipcode' => $data['delivery_postcode'],
'Provincia' => $data['zone_code'],
'Bda' => '',
'DataDocumentoTrasporto' => '',
'Colli' => '1',
'Incoterm' => '',
'PesoReale' => '1,00',
'ImportoContrassegno' => $imp_cont,
'NoteSpedizione' => $data['customers_telephone'],
'TipoPorto' => 'F',
'Assicurazione' => $ass_ins,
'PesoVolume' => '',
'TipoCollo' => $tipo_collo,
'FrancoAnticipata' => '',
'RiferimentoCliente' => '',
'NoteAggiuntive' => '',
'CodiceClienteDestinatario' => '',
'Email' => '',
'Cellulare1' => $telefono_1,
'Cellulare2' => '',
'ServiziAccessori' => '',
'ModalitaIncasso' => $mod_inc
),),),
);
$dom = new DOMDocumentExt('1.0', 'utf-8');
$chiamta = $dom->loadArray($Label);
$dudy = $dom->saveXML();
@Iserni 我放 ---> 只在这里,这不在我的代码中,我要测试在线工具,我真的没有看到错误。
我仍然收到 xml 格式的错误,还有其他线索吗?
已编辑:
我刚刚注意到我的请求有:
<ns1:AddParcel env:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
而要求是:
<AddParcel xmlns="http://weblabeling.gls-italy.com/">
所以我注意到在信封中也有一些与命名空间不同的东西。 会不会是问题?
WSDL 似乎在 gls 服务器上不起作用,他们没有在文档中提供任何有关它的信息。
已编辑:
也许我很笨,但这是请求 xml 架构:
那么现在我应该在之前放置更多空格吗? 你怎么看?如果是的话怎么办?
【问题讨论】:
-
我认为您应该添加有关如何创建 Soap 请求 XML 的代码。
-
php 是肥皂的噩梦......我建议你将 nusoap 库适应你的项目,看看它是如何让 xml 执行它的
-
啊,不,php Soap 还可以。此外,如果您查看问题,您会发现 Fabio 已经非常接近了。
-
@Fabio:除了
<XMLInfoParcel>元素之外的所有东西看起来都不错。如果您添加创建请求的代码,尤其是添加该代码对您的问题很有用。 -
是的,我认为我非常接近。我实际上确实用一个类生成了 xml,数据存储在 db 中。我要添加脚本的一部分