2009-06-27 25 views
1

すべて、phpからWebサービスを呼び出していますか?

Atlastは私たちのApacheサーバーにPEAR SOAPモジュールをインストールしました。今すぐ次のコードを試してみます - それは私にエラー "HTTP Bad Request"を与えています。誰も助けることができますか?

<html> 
<body> 
<?php 
/* Include PEAR::SOAP's SOAP_Client class: */ 
require_once('SOAP/Client.php'); 
$zip = $_REQUEST['zip']; 
?> 

<form action="wszip.php" method="post"> 
<table cellspacing="10" bgcolor="CadetBlue"> 
<tr> 
<td><B>Enter Zip Code : </B><input type="text" name="zip" /></td> 
<td></td> 
<td><input type="Submit" value="Find It!"/></td> 
</tr> 
</table> 
<BR><BR><BR><BR> 
</form> 

<?php 
if($zip != "") 
{ 
    $wsdl_url = "http://www.webservicex.net/uszip.asmx?WSDL"; 
    $wsdl  = new SOAP_WSDL($wsdl_url); 
    $client = $wsdl->getProxy(); 
    $params = array('USZip' => $zip); 
    $response = $client->GetInfoByZIP($params); 
    echo $response; 
} 
?> 

</body> 
</html> 

ありがとうございます。

+0

5.3.0RC4 WINNT City: New York
<フォームアクション= "wszip.php" メソッド= "ポスト"> <テーブルCELLSPACING = "10" BGCOLOR = "CadetBlue"> ​​は、郵便番号を入力します。名前= "郵便番号" /> ​​ ​​の <?phpの ($ ZIP!= "")の場合 { \t $ wsdl_url = "http://www.webservicex.net/uszip.asmx?WSDL"; \t $ wsdl =新しいSOAP_WSDL($ wsdl_url); \t $ client = $ wsdl-> getProxy(); \t $ params = array( 'USZip' => $ zip); \t $ response = $ client-> GetInfoByZIP($ params); \t echo $ response; } ?> – thezone

答えて

2

これは

$client = $wsdl->getProxy(); 
// don't wrap it into another array. 
// $params = array('USZip' => $zip); 
$response = $client->GetInfoByZIP($zip); 
var_dump($response);
になりますが、結果が表示される前に、私の画面には "PHP Deprecated:"と "PHP Strict Standards:Non-static method ..."というメッセージがあふれています。むしろ、私はむしろ使用したいと思います soap extension
<?php 
echo PHP_VERSION, ' ', PHP_OS, "\n"; 
$client = new SoapClient(' http://www.webservicex.net/uszip.asmx?WSDL '); 
$response = $client->GetInfoByZIP(array('USZip'=>'10006')); 
var_dump($response);
残念なことに応答は
<s:element minOccurs="0" maxOccurs="1" name="GetInfoByZIPResult"> 
    <s:complexType mixed="true"> 
     <s:sequence> 
      <s:any/> 
     </s:sequence> 
    </s:complexType> 
</s:element>
と定義されています。おおまかに言えば「応答は...何か」という意味です。すなわち、xmlを「手動で」解析する必要があります。
<?php 
echo PHP_VERSION, ' ', PHP_OS, "\n"; 
$client = new SoapClient(' http://www.webservicex.net/uszip.asmx?WSDL '); 
$response = $client->GetInfoByZIP(array('USZip'=>'10006'));

$doc = new SimpleXMLElement($response->GetInfoByZIPResult->any); echo 'City: ', $doc->Table->CITY[0];

プリント

+0

うん... 要素は、全体のSOAP仕様の最もばかげた部分に持っています。 – troelskn

関連する問題