61

そのWSDLに基づいてWebサービスを利用するためのコードを生成するために使用できるPHP用のツールはありますか?VisualStudioまたはJavaで同じことを行うEclipseプラグインの[Web参照の追加]をクリックするのに匹敵するもの。

4

7 に答える 7

87

PHP 5では、WSDL でSoapClientを使用して Web サービス関数を呼び出すことができます。:

$client = new SoapClient("some.wsdl");

$client は、some.wsdl で定義されているクラス メソッドを持つオブジェクトになりました。したがって、WSDL に getTime というメソッドがあった場合は、次のように呼び出します。

$result = $client->getTime();

そして、その結果は (明らかに) $result 変数になります。__getFunctions メソッドを使用して、使用可能なすべてのメソッドのリストを返すことができます。

于 2008-08-23T18:54:21.680 に答える
21

私はwsdl2phpで大成功を収めました。Webサービスで使用されるすべてのオブジェクトとメソッドのラッパークラスが自動的に作成されます。

于 2008-08-15T18:36:14.227 に答える
10

過去にNuSOAPを使用したことがあります。インクルードできるPHPファイルのセットにすぎないので、気に入りました。Web サーバーにインストールするものは何もなく、変更する構成オプションもありません。おまけにWSDLもサポートしています。

于 2008-08-13T13:54:10.897 に答える
2

この記事では、PHP SoapClient を使用して API Web サービスを呼び出す方法について説明します。

于 2011-07-26T09:17:30.267 に答える
1

これらの機能は、それらの言語での開発に使用しているツールに固有のものです。

たとえば、メモ帳を使用してコードを記述している場合、これらのツールはありません。したがって、使用しているツールについて質問する必要があるかもしれません。

PHP の場合: http://webservices.xml.com/pub/a/ws/2004/03/24/phpws.html

于 2008-08-07T07:17:55.340 に答える
1

次のものが提供されたとします。

<x:Envelope xmlns:x="http://schemas.xmlsoap.org/soap/envelope/" xmlns:int="http://thesite.com/">
    <x:Header/>
    <x:Body>
        <int:authenticateLogin>
            <int:LoginId>12345</int:LoginId>
        </int:authenticateLogin>
    </x:Body>
</x:Envelope>

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
    <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
        <authenticateLoginResponse xmlns="http://thesite.com/">
            <authenticateLoginResult>
                <RequestStatus>true</RequestStatus>
                <UserName>003p0000006XKX3AAO</UserName>
                <BearerToken>Abcdef1234567890</BearerToken>
            </authenticateLoginResult>
        </authenticateLoginResponse>
    </s:Body>
</s:Envelope>

http://thesite.com/にアクセスすると、WSDL アドレスが http://thesite.com/PortalIntegratorService.svc?wsdlであることがわかりました。

$client = new SoapClient('http://thesite.com/PortalIntegratorService.svc?wsdl');
$result = $client->authenticateLogin(array('LoginId' => 12345));
if (!empty($result->authenticateLoginResult->RequestStatus)
    && !empty($result->authenticateLoginResult->UserName)) {
    echo 'The username is: '.$result->authenticateLoginResult->UserName;
}

ご覧のとおり、XML で指定された項目は PHP コードで使用されますが、LoginId 値は変更できます。

于 2016-05-06T09:10:03.407 に答える