0

すべて

以下のコードを使用してsoapサーバーを作成します。PHPでwsdlドキュメントを作成するのは少し難しいことがわかったので、非wsdlモードを使用することにしました。

 $soapServer = new SoapServer(NULL,array('uri'=>'http://com.test.env',
                                            'encoding'=>'UTF-8'));
    $soapServer->addFunction("workprocess_orders_api_add");
    $soapServer->addFunction("workprocess_list_api_get_local_name");


    $soapServer->handle();

しかし、このプログラムにアクセスしようとすると、何も出力されません。Webブラウザとプログラムの両方(私はSoapClientを使用しています)

  $client = new SoapClient(NULL,array('uri'=>'http://com.test.env',
                                    'location'=>'http://localhost/~breeze.kay/ams/workprocess/api/soap/',
                                    'trace'=>1,
                                    'style'    => SOAP_DOCUMENT,
                                    'use'      => SOAP_LITERAL));


var_dump($client->__call('workprocess_orders_api_add',array())); //print null
var_dump($client->__getFunctions()); //print null

私はクライアント側でこのような関数を呼び出すのに疲れました:

echo $client->sayHello('test');

エラーが発生します:

Fatal error: Uncaught SoapFault exception: [Client] looks like we got no XML document in /Users/breeze.kay/Sites/ad-test/soap.php:15

どこが間違っていますか?わかりません。:(コードは問題ないようです。なぜ印刷されないのですか?

4

2 に答える 2

0

このXML document not foundエラーは通常、php の開始タグまたは終了タグの前に空白がある場合に発生します。それをクリアしてテストしてください。

于 2011-12-14T07:41:20.037 に答える
0

わかりました、試してみました。

問題は、リクエストの URL に次のように ?wsdl を追加する必要があることです: http://localhost/wbs/api.php?wsdl

しかし、私は自分のサイトに url-rewrite を使用しています。書き換えルールは元の url 構造体を壊します。

ところで、soap リクエストの URL ルールについて話している場所を知っている人はいますか?

マニュアルを読んでも見つかりません。

于 2011-10-09T09:27:01.423 に答える