0

オプションの RequestObject を要求している .NET Web サービスを使用しようとしていますが、それが cURL でどのように機能するかわかりません。誰か知っていますか?

この Web サービスの場合: https://uat.petfirsthealthcare.com/pfh.service.webservices/coreservice.svc/json/GetBreedList SpeciesId の値が 1 の要求オブジェクト 'CoreServiceGetBreedListRequest' を送信する必要があります。

これが私が持っているものですが、値がありません。

$request = 'https://uat.petfirsthealthcare.com/pfh.service.webservices/coreservice.svc/json/GetBreedList';
        $session = curl_init();
        curl_setopt($session, CURLOPT_URL, $request);
        curl_setopt($session, CURLOPT_HEADER, false);
        curl_setopt($session, CURLOPT_SSLVERSION,3);
        curl_setopt($session, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($session, CURLOPT_SSL_VERIFYHOST, 2);
        curl_setopt($session, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($session, CURLOPT_FOLLOWLOCATION, TRUE);
        curl_setopt($session, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
        $response = curl_exec($session);
        curl_close($session);

助けてくれてありがとう!

4

2 に答える 2

2

これは SOAP サービスであり、REST サービスではありません。とにかく、curl() を使用して WSDL 定義を読み取り、試行錯誤して使用することもできますが、PHP の SOAP ライブラリを使用して使用する方がはるかに簡単です。

SoapClient クラスを使用します。WSDL ファイルを要求されたら、次を渡すだけです。

https://uat.petfirsthealthcare.com/pfh.service.webservices/CoreService.svc?wsdl

または、ダウンロードしてサーバーにアップロードし、パスを設定します (ただし、サービスが変更された場合、問題が見つかる可能性があります)。そのファイルは、SoapClient クラスに、サービスに対して正しい要求を行うために使用可能なメソッドと必要なパラメーター (およびパラメーターの型) を提供します。PHP は何でも文字列にキャストする傾向があり、SoapClient クラスはパラメーターの型にうるさいので、パラメーターの型に気をつけてください (WSDL が整数でなければならないことを示している場合、文字列を送信すると、それが "3" であっても失敗する可能性があります)。 )。

于 2012-11-05T20:23:13.727 に答える
1

cURL を使用する場合は、CURLOPT_HTTPHEADER を使用して、コンテンツ タイプ application/json の配列とコンテンツの長さを渡す必要があります。

CURLOPT_POSTFIELDS では、次のような適切な形式のリクエストも送信します。

$object = json_encode(array('Speciesid' => 1));

コンテンツの長さは =strlen($object)

于 2012-11-05T20:28:08.853 に答える