1

Web サービスを利用しようとしていますが、うまくいきません。xml が適切に設定されていないようです。

これは私のPHPコードです:

<?php

$wsdlUrl = "http://api.clickatell.com/soap/webservice.php?WSDL";
$serviceUrl = "http://api.clickatell.com/soap/webservice.php";

    $request = array("user"=>"anyuser",
                "password"=>"asdsda",
                "api_id"=>"1234"
                );

var_dump($request);

try {
    $client = new SoapClient($wsdlUrl, array("trace" => 1, "location" => $serviceUrl));
    var_dump($client);
    echo "\n";
    $response = $client->auth($request);
    var_dump($response);
    var_dump($client->__getLastRequest());

    echo "\n";
}
catch(Exception $exp) {
    echo "EXCEPTION";
}

?>

SOAP パケットは次のとおりです。

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://api.clickatell.com/soap/webservice" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
    <SOAP-ENV:Body>
        <ns1:auth>
            <api_id xsi:type="xsd:int">1</api_id>
            <user xsi:nil="true"/>
            <password xsi:nil="true"/>
        </ns1:auth>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

api_id、ユーザー、およびパスワードが送信されないコードの何が問題になっていますか?

4

1 に答える 1

2

チェックアウトするvar_dump($client->__getFunctions())と、通常の関数呼び出しと同じようにパラメーターを渡す必要があることがわかります。

したがって、次のいずれかを使用して冗長なことを行うことができますSoapParam

$response = $client->auth(
    new SoapParam($request["api_id"], "api_id"),
    new SoapParam($request["user"], "user"),
    new SoapParam($request["password"], "password")
);

または、パラメータを直接指定するだけで、冗長性を減らすことができます。

$response = $client->auth($request["api_id"],
    $request["user"], $request["password"]);
于 2012-10-14T16:03:45.393 に答える