2017-01-14 14 views
0

Webサービスに認証とデータを送信するためのPHPコードを記述したいと思います。 の下にWebサービスのSOAP XMLの構造を参照してください。PHP - メソッドパラメータでSOAP Webサービスを送信

これはあなただけで、基本的なコードを書くために私を助けることができる場合、私は本当に感謝するWeb APIにhttps://portal.xyzonline.com/API/ABCAPIServer.asmx?WSDL

にアクセスするためのURLです。

これは私が何をしようとしていますものです:WCFStorm

PHPコード

$client = new SoapClient("https://portal.xyzonline.com/API/ABCAPIServer.asmx?WSDL"); 
$params = array(
'addCaseReq' => array(
    'DlcpmCase' => array(
     'CaseID' => '1234', 
     'CustomerID' => '222', 
     'PatientFirst' => 'John' 
     ), 
    'Auth' => array(
     'AppName' => 'appname', 
     'UserName' => 'username', 
     'Password' => 'password' 
     ) 
    ) 
    ); 
try { 
    $responsetest = $client->AddCase(new SoapParam(array($params))); 
} catch(SoapFault $fault) { 
    print_r($fault); 
} 

XML

<wsdl:types> 
<s:schema> 
    <s:element name="AddCase"> 
    <s:complexType> 
    <s:sequence> 
    <s:element minOccurs="0" maxOccurs="1" name="addCaseReq" type="tns:ABCAPIAddCaseRequest"/> 
    </s:sequence> 
    </s:complexType> 
    </s:element> 
    <s:complexType name="ABCAPIAddCaseRequest"> 
    <s:complexContent mixed="false"> 
    <s:extension base="tns:ABCAPIRequest"> 
    <s:sequence> 
     <s:element minOccurs="0" maxOccurs="1" name="AbcCase" type="tns:ABCCase"/> 
    </s:sequence> 
    </s:extension> 
    </s:complexContent> 
    </s:complexType> 
    <s:complexType name="ABCAPIRequest" abstract="true"> 
    <s:sequence> 
    <s:element minOccurs="0" maxOccurs="1" name="Auth" type="tns:ABCAPIAuthentication"/> 
    </s:sequence> 
    </s:complexType> 
    <s:complexType name="ABCAPIAuthentication"> 
    <s:sequence> 
    <s:element minOccurs="0" maxOccurs="1" name="AppName" type="s:string"/> 
    <s:element minOccurs="0" maxOccurs="1" name="UserName" type="s:string"/> 
    <s:element minOccurs="0" maxOccurs="1" name="Password" type="s:string"/> 
    </s:sequence> 
    </s:complexType> 
    <s:complexType name="ABCCase"> 
    <s:sequence> 
    <s:element minOccurs="0" maxOccurs="1" name="CaseID" type="s:string"/> 
    <s:element minOccurs="1" maxOccurs="1" name="CaseNumber" type="s:int"/> 
    <s:element minOccurs="0" maxOccurs="1" name="CustomerID" type="s:string"/> 
    <s:element minOccurs="0" maxOccurs="1" name="PatientFirst" type="s:string"/> 
    </s:sequence> 
    </s:complexType> 
</s:schema> 
</wsdl:types> 

スクリーンショット

私はWCFStormを使用していますが、すべて正常に動作しています。スクリーンショットを参照してください。

enter image description here

+0

あなたはより具体的な問題を述べることができますか?あなたはあなたの質問にいくつかのコードを持っています - それがうまくいかない場合、それについて働いていないことを説明できますか? –

+0

@GrishaLevit、ありがとうございました。上記のスクリーンショットを見ると、認証とWebサービスにデータを送信しようとしています。上記のPHPコードで、認証とデータを渡すと正常にデータを送信しています。私のPHPコードは実際にはXML構造に基づいてデータを提出していないようです – orbnexus

+1

PHP拡張モジュールをインストールして有効にしましたか? http://stackoverflow.com/questions/22594582/how-to-enable-soap-on-centos –

答えて

1

あなたがリクエストを送信するためにPHPスクリプトを記述する必要がある場合、私は強く、このようなPackageGeneratorプロジェクトとしてPHPのジェネレータにWSDLを使用するためにあなたを助言します。送信するデータの構築とレスポンスの処理が本当に簡単になります。ネイティブのSoapClient、SoapVar、SoapParamクラスは、必要なパラメータに一致するPHPクラスのみを扱うため、直接使用する必要はありません。構築するPHPオブジェクトは、SoapClientクラスによってXMLリクエストを生成するようにマップされます。生成されたパッケージでは、Eclipse PDTやPHP Stormなどの優れたIDEを使用して、自動補完で使用するパラメータと値を知る必要があります。

関連する問題