私は今発見したGuzzleフレームワークを愛しています。私はそれを使用して、さまざまな応答構造を使用して複数のAPIにまたがってデータを集計しています。 JSONとXMLを使って見つけることができますが、消費するために必要なサービスの1つにSOAPを使用しています。 GuzzleでSOAPサービスを使用する組み込みの方法はありますか?Guzzleを使用してSOAPを消費する
14
A
答えて
4
IMHO完全なSOAPサポートがなく、HTTPリクエストでのみ動作します。 のsrc /がつがつ食う/ HTTP/ClientInterface.phpライン:76
public function createRequest(
$method = RequestInterface::GET,
$uri = null,
$headers = null,
$body = null,
array $options = array()
);
SOAPサーバは、ポート80上で交渉するように設定されている場合でも、私はそれがWSDL
+0
私は今やバージョン6になっていると思います。彼らがSOAPをサポートするために何らかの変更を行ったかどうか知っていますか? – gmponos
5
古いトピックをサポートしているとして、PHPののSoapClientはこちらより適切な解決策だと思います私は同じ答えを探していたので、async-soap-guzzleが仕事をしているようです。
2
GuzzleにSOAPリクエストを送信させることができます。 SOAPには常にエンベロープ、ヘッダー、および本文があります。
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header/>
<soapenv:Body>
<NormalXmlGoesHere>
<Data>Test</Data>
</NormalXmlGoesHere>
</soapenv:Body>
私が最初にすることはSimpleXMLを持つXML体の構築である。
$xml = new SimpleXMLElement('<NormalXmlGoesHere xmlns="https://api.xyz.com/DataService/"></NormalXmlGoesHere>');
$xml->addChild('Data', 'Test');
// Removing xml declaration node
$customXML = new SimpleXMLElement($xml->asXML());
$dom = dom_import_simplexml($customXML);
$cleanXml = $dom->ownerDocument->saveXML($dom->ownerDocument->documentElement);
私たちは、その後、SOAPエンベロープ、ヘッダとボディと私たちのxml体を包みます。
$soapHeader = '<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body>';
$soapFooter = '</soapenv:Body></soapenv:Envelope>';
$xmlRequest = $soapheader . $cleanXml . $soapFooter; // Full SOAP Request
次に、エンドポイントがapiドキュメントにあるかどうかを調べる必要があります。
私たちは、その後、がつがつ食うにクライアントを構築:
$client = new Client([
'base_url' => 'https://api.xyz.com',
]);
try {
$response = $client->post(
'/DataServiceEndpoint.svc',
[
'body' => $xmlRequest,
'headers' => [
'Content-Type' => 'text/xml',
'SOAPAction' => 'https://api.xyz.com/DataService/PostData' // SOAP Method to post to
]
]
);
var_dump($response);
} catch (\Exception $e) {
echo 'Exception:' . $e->getMessage();
}
if ($response->getStatusCode() === 200) {
// Success!
$xmlResponse = simplexml_load_string($response->getBody()); // Convert response into object for easier parsing
} else {
echo 'Response Failure !!!';
}
関連する問題
- 1. jnaを使用してキーフックを使用して消費する
- 2. PowershellでSoap複合型を消費してSoapサービスをホットに保つため
- 3. jnaを使用してキーイベントを消費する
- 4. WCFを使用したMSMQの消費
- 5. Web参照の追加を使用してWCFサービスを消費し、SOAPヘッダーを追加します。
- 6. SOAP WSを消費するとエラー401が返される
- 7. カフカの消費者は、私はカフカサーバからのメッセージ(トピック)を消費するKafkaConsumerを使用してい
- 8. アドホックWebサービス(非SOAP、スキームレスXML)を消費する方法
- 9. iPhoneのチタンフレームワークでウェブサービス(SOAP)を消費する方法は?
- 10. だけ私はPerlのSOAPサービスを消費しようとしているperlのSOAPサービス
- 11. SOAPでSOAP SOAPリクエストを使用してSOAPを送信する
- 12. リンク領域を消費する方法 - CSSコードを使用してヒットする
- 13. WSDLファイルとXSDファイルを使用しているWebサービスを消費する
- 14. php guzzleでaccess_tokenを使用してリンクしている投稿
- 15. RestSharpを使用してJWTアクセストークンとユーザークレームを消費する方法
- 16. WAI(raw request body)を使用してコンジットを消費する方法
- 17. の.NET SOAPの消費 - 私は公にここにあるVoxboneサービスを消費しようとしています
- 18. PHP SOAP Webサービスをどのように消費するのですか?
- 19. プッシュされたSOAPメッセージを無期限に消費するサービスですか?
- 20. WSDLの消費 - どのツールを使用するのですか?
- 21. Springを使用してJMSトピックメッセージ消費をプログラムで遅延させる方法
- 22. PHPのsalesforceの名前空間でSoapメッセージを消費するには
- 23. マルチ消費者でTextWriterを使用するには?
- 24. Java(メトロ)で.NET Webサービスを使用する - XMLNode/XMLDocumentの消費?
- 25. レールを使ってWebサービス/ apisを消費する
- 26. RESTful CXFを使用したマルチパート/フォームデータの消費
- 27. Sqlite3ブロブを使用したC++プログラム内でのRAM消費
- 28. Int64を使用したhaskellでのメモリ消費
- 29. C++でメモリ使用量を追跡し、メモリ消費量を評価する
- 30. は、私は具体的には、SOAPのWebサービスを消費しようとしているサービス参照
私もこのトピックに関する詳細情報を取得したいと思います。 Guzzleのドキュメントには、.wsdlファイルやSOAPに関する記述はありません。 – Rvanlaak