0

外部サーバーからデータを呼び出すためにphp SOAPClientを使用しており、soapUIを使用してサービスをテストおよび検証しました。私の要求は、文字列 (最初の 3 つは数値) である 4 番目のパラメーターに到達するまで、正しく機能しているようです。私のコードとリクエストは次のとおりです。

$wdsl = "http://ofmpub.epa.gov/WATERSWebServices/SpatialServices?WSDL";
$client = new SoapClient($wdsl, array(
                                "trace"=>1,
                                "exceptions"=>0));
$lat =  46.852783;
$long = -114.004517;
$radius = 1;
$program = '303D';

$values = $client->getEntitiesByLatLong($lat,$long,$radius,$program);

結果のリクエスト:

<?xml version="1.0" encoding="utf-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://ofmpub.epa.gov/WATERSWebServices/SpatialServices.wsdl">
  <SOAP-ENV:Body>
    <ns1:getEntitiesByLatLong>
      <latitude>46.852783</latitude>
      <longitude>-114.004517</longitude>
      <searchRadiusMiles>1</searchRadiusMiles>
      <programsList />
    </ns1:getEntitiesByLatLong>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

サービスはここに文字列を期待していると思います。コードで何か間違ったことはありますか?

4

1 に答える 1

0

私の記憶が正しければ、SOAP クライアント メソッド呼び出しに配列またはオブジェクトを渡す必要があります。すなわち

$data = array('latitude' => 46.852783, 'longitude' => -114.004517, ... );
$values = $client->getEntitiesByLatLong($data);

配列のキーまたはオブジェクトのプロパティは、それに応じて xml ノードと値にマップされます。

SOAP クライアント オブジェクトでは、リクエスト xml を取得し、(getLastRequest() を使用して) ネットワーク経由で送信されているものを実際に確認できます。

于 2013-04-30T06:35:40.170 に答える