2

出荷データを渡すために 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スキーマです:

スキーマ

では、前に空白を追加しますか? どう思いますか?もしそうなら、どのように?

4

1 に答える 1

2

XML に 3 つのエラーがありますが、それら (および将来のエラー) はxmllint(こちらもonline ) を使用して簡単に見つけることができます。

基本的に、XML コメントはでは-->なく and で終わる--->必要があり、タグの開閉を確認する必要があります。

また、 に対するリクエストですが<XMLInfoParcel>string</XMLInfoParcel>、それはあなたが送っているものではありません...?

于 2012-10-28T19:56:23.737 に答える