Ich war cURL für die Veröffentlichung von Daten auf eine API, aber habe beschlossen, zu Guzzle zu wechseln. Mit cURL würde ich das tunReplikation cURL Beitrag in Guzzle
$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);
Dies ist, was ich gerade mit Guzzle versuche.
$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();
Das erste Problem, das ich bin vor ist, dass es die arguement 3 für Anforderung besagt, muss ein Array sein, und ich kann es eine Zeichenfolge bin vorbei. Das ist in Ordnung, aber wie kann ich dann meinen XML-Block senden? Außerdem denke ich, dass ich die Header falsch gesetzt habe?
Ich habe die Dokumentation durchgelesen und sehe, dass Parameter 3 ein Array sein muss, aber ich sehe nicht, wie man eine XML-Zeichenfolge posten kann.
Jeder Ratschlag geschätzt.
Dank
'$ Client-> Anfrage ('POST', 'http: // was auch immer', ['body' => $ data]];' –
Perfekt, danke. Als Antwort markieren und ich werde akzeptieren. Weißt du, wie ich die Header einstellen kann? # –