2

申し訳ありませんが、非常に簡単なことかもしれませんが、私はそれを何日も機能させることができません!

これは私のwsdlの一部です:

<xsd:complexType name="PERSON"> 
<xsd:sequence> 
    <xsd:element name="ExterneID" minOccurs="0" type="xsd:int" />
    <xsd:element name="Email" type="xsd:string" />
    ...
</xsd:sequence> 
</xsd:complexType>

<message name="insertAdresse">
    <part name="BmLogin" type="xsd:string" />
    <part name="TS" type="xsd:int" />
    <part name="UT" type="xsd:string" />
    <part name="Person" type="typens:PERSON"/>
</message>

これをsoapサーバーに渡すにはどうすればよいですか?そして、どうすればそこでパラメータに対処できますか?

私はたくさんのバージョンを試しましたが、何も役に立ちませんでした!例:

class c_adresse
{
    public $ExterneID;
    public $Email;

    public function __construct($ExterneID,$Email)
    {
        $this->ExterneID = $ExterneID;
        $this->Email = $Email;
    }
}

$no1 = array();
$no1[] = new c_adresse(33,"peter@xxxxxx.at");

したがって、$no1は次のようになります。

array(1) {
[0]=>
  object(c_adresse)#2 (2) {
    ["ExterneID"]=>
    int(33)
    ["Email"]=>
    string(15) "peter@xxxxxx.at"
  }
}

電話:

$response = $soap_client->insertAdresse($login,$ts,$token,$no1);

エラーメッセージ:

PHP Fatal error:  SOAP-ERROR: Encoding: object hasn't 'Email' property in /home/peter/Desktop/soap.php on line 41
PHP Fatal error:  Uncaught SoapFault exception: [Client] SOAP-ERROR: Encoding: object hasn't 'Email' property in /home/peter/Desktop/soap.php:41

石鹸サーバーに渡すオブジェクト/配列(?)を設計するにはどうすればよいですか?

サーバーで$datenに対応できません。時々、パラメーターの順序とスタイルを試してみると、「メッセージ」セクションでstring、int、および配列(complexType [PERSON])を混合しない場合にのみ、何らかの方法で機能するようになります。しかし、$ datenに対処できないか、$BmLoginが空であるなど...

function insertAdresse($BmLogin,$TS,$UT,$daten)

さて、私は解決策を見つけました!

私はこれを変更しました:

<xsd:element name="PERSON" type="PersonType"/>
<xsd:complexType name="PersonType"> 

その後、これ...

$response = $soap_client->insertAdresse($login,$ts,$token,array("ExterneID"=>22,"Email"=>"peter@xxxxxx.at"));

正常に動作します!

4

1 に答える 1

0

さて、私は解決策を見つけました!

これはWSDLにありませんでした:

<xsd:element name="PERSON" type="typens:PersonType"/>
<xsd:complexType name="PersonType"> 

その後、これ...

$response = $soap_client->insertAdresse($login,$ts,$token,array("ExterneID"=>22,"Email"=>"peter@xxxxxx.at"));

正常に動作します!

于 2013-02-28T16:05:07.880 に答える