私はcURLを使用してAPIにデータを投稿しましたが、Guzzleに切り替えることにしました。 cURLを使用すると、私はこれを行うでしょうGuzzleのcURL投稿を複製する
$data =
"<Lead>
<Name>$newProject->projectName</Name>
<Description>$newProject->projectName</Description>
<EstimatedValue>$newProject->projectValue</EstimatedValue>
</Lead>";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://api.someurl.com/lead.api/add?apiKey=12345&accountKey=12345");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: text/xml',
'Content-Length: ' . strlen($data)
));
$output = curl_exec($ch);
これは私が現在Guzzleで試みていることです。
$data = "<Lead>
<Name>$campaign->campaignName</Name>
<Description>$campaign->campaignName</Description>
<EstimatedValue>$campaign->campaignValue</EstimatedValue>
</Lead>";
$client = new GuzzleHttp\Client();
$req = $client->request('POST', 'https://somurl', [
'body' => $data,
'headers' => [
'Content-Type' => 'text/xml',
'Content-Length' => strlen($data),
]
]);
$res = $client->send($req);
$output = $res->getBody()->getContents();
私が直面しています最初の問題は、それが要求配列にする必要がある、と私はそれを文字列を渡していますため、そのarguement 3を述べていることです。それは問題ありませんが、xmlブロックをどうやって送ることができますか?また、ヘッダーを正しく設定していない可能性があります。
私はドキュメントを読み、パラメータ3が配列である必要があることを確認しましたが、XML文字列を投稿する方法はわかりません。
アドバイスありがとうございます。
おかげ
$ client-> request( 'POST'、 'http:// whatever'、['body' => $ data]); ' –
パーフェクト、ありがとう。答えとしてマークし、私は受け入れます。 # –