Kdyby/Curl jak se odeílají data v post(array)

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
kleinpetr
Člen | 480
+
0
-

Ahoj, chci se zeptat jak se odešlou data pomocí kdyby/curl metodou post ? docela s tím teď bojuji a potřeboval bych nějaké info.

$data['var1'=>1,'var2'=>2...];
$request = new Kdyby\Curl\Request('some-url.com/path');
$response = $request->post($data);

když to doešlu takhle, tak mi vyhodí exceptionu 415 mediaType..
a teď se chci zeptat když ten server očekává příchod JSON a já nastavím

$request = new Kdyby\Curl\Request('some-url.com/path');
$request->headers['Accept'] = 'application/json';
$request->headers['Content-Type'] = 'application/json';
$response = $request->post($data);

Tak hodí bad request 400

jak bych to tedy měl udělat správně ?? nejprve převést pole do jsonu a poté až poslat, tedy takhle ?

$jsonData = Json::encode($data);
$request = new Kdyby\Curl\Request('some-url.com/path');
$request->headers['Accept'] = 'application/json';
$request->headers['Content-Type'] = 'application/json';
$response = $request->post([$jsonData]);

Nebo jak to tam funguje ? díky

Filip Procházka
Moderator | 4668
+
+1
-

To přece záleží na tom, v jakém formátu to očekává server.

Pokud chce json, tak ideálně

$request = new Kdyby\Curl\Request('some-url.com/path');
$request->headers['Accept'] = 'application/json';
$request->headers['Content-Type'] = 'application/json';
$response = $request->post(Json::encode($data)); // všimni si že tady nepředávám pole, ale ten JSON

Pokud chceš udělat klasický form-encoded POST

$data = ['var1'=>1,'var2'=>2...];
$request = new Kdyby\Curl\Request('some-url.com/path');
$response = $request->post($data);
kleinpetr
Člen | 480
+
0
-

jop to jsem měl na mysli :) díky za objasnění.