Звоните в веб-сервис с php? - PullRequest
1 голос
/ 27 июня 2009

All

В Atlast наш администратор установил модуль PEAR SOAP на наш сервер apache. Теперь, когда я пытаюсь следующий код - он дает мне ошибку «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>

Спасибо.

1 Ответ

2 голосов
/ 28 июня 2009

Это будет

$client   = $wsdl->getProxy();
// don't wrap it into another array.
// $params = array('USZip' => $zip);
$response = $client->GetInfoByZIP($zip);
var_dump( $response );
, но перед тем, как увидеть какие-либо результаты, мой экран заполняется сообщениями "PHP устарел:" и "Строгие стандарты PHP: нестатический метод ...". Я бы предпочел использовать расширение мыла
<?php
echo PHP_VERSION, ' ', PHP_OS, "\n";
$client = new SoapClient('<a href="http://www.webservicex.net/uszip.asmx?WSDL" rel="nofollow noreferrer">http://www.webservicex.net/uszip.asmx?WSDL</a>');
$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('<a href="http://www.webservicex.net/uszip.asmx?WSDL" rel="nofollow noreferrer">http://www.webservicex.net/uszip.asmx?WSDL</a>');
$response = $client->GetInfoByZIP(array('USZip'=>'10006'));</p>

<p>$doc = new SimpleXMLElement($response->GetInfoByZIPResult->any);
echo 'City: ', $doc->Table->CITY[0];
печать
5.3.0RC4 WINNT
City: New York
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...