Autor | Zpráva | ||
---|---|---|---|
quatzael Profil |
Potřebuju na URL poslat požadavek přes proměnnou POST a získat zpátky odpověď. Jedná se o API.
Poradíte prosím někdo jak na to? |
||
Baklazan1 Profil * |
#2 · Zasláno: 9. 4. 2015, 15:44:46
skus cURL
|
||
quatzael Profil |
Baklazan1:
No tak jsem to trochu nastudoval. Takhle, to co řeším já má být REST INTERFACE. Nějak mi není ale jasný jak se s tím zachází.. Tím postem mám poslat data ve formátu JSON. Zkouším tohle: $url="http://55.12.602.8:43090/api/services/rest/super_api/Functions"; $json = '{"firstName":"Ferda", "lastName":"Mravenec"}'; $options = array( CURLOPT_HEADER => false, CURLOPT_RETURNTRANSFER => true, CURLOPT_TIMEOUT => 2, CURLOPT_URL => $url, // nemám tam dát náhodou ještě nějaký $query, ve kterým by byl ten POST? Něco takovýho například: $url."?".$query ? CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_POSTFIELDS => $json ); $rest= curl_init(); curl_setopt_array($rest,$options); $response = json_decode(curl_exec($rest),true); Vůbec nevím jak na to.. Jde nějak aspoň ověřovat, že je navázáno spojení? Nebo i získávat požadovanou strukturu requestu, tak jak je to u ws? |
||
juriad Profil |
#4 · Zasláno: 9. 4. 2015, 21:16:00
Možná musíš poslat hlavičku
Content-Type: application/json .
Příklad těch hlaviček máš tady: www.lornajane.net/posts/2011/posting-json-data-with-php-curl Ne, url je jen toto. Představ si to, jako že odesíláš POSTem formulář, tam se také skrze URL nic nepřidává. Pro začátek si také zakaž CURLOPT_RETURNTRANSFER a nesnaž se dekódovat odpověď - tak se ti přímo zobrazí. Až to odladíš (dostaneš to co chceš), tak si to zase přidáš. |
||
quatzael Profil |
juriad:
Zkusil jsem: $rest= curl_init(); var_dump($rest); a háže mi to: resource(7) of type (curl)
Co znamená ta sedmička? „Možná musíš poslat hlavičku Content-Type: application/json.“ Zkusil jsem, ale ani tak to nefunguje.. „Ne, url je jen toto. Představ si to, jako že odesíláš POSTem formulář, tam se také skrze URL nic nepřidává.“ To chápu, ale tohle je pro mě naprostá velká neznámá, takže nevím na co vše se můžu spolehnout, že platí jako v běžným fungování. $response = json_decode(curl_exec($rest),true); // tohle mi háže: 1 (int) $response = curl_exec($rest); // tohle zase: true (bool) |
||
juriad Profil |
#6 · Zasláno: 9. 4. 2015, 21:43:52
quatzael:
resource je php.net/manual/en/language.types.resource.php. Je to abstrakce něceho skrytého v knihovnách mimo PHP; uvnitř PHP to nemá žádnou reprezentaci. Takže, aby se to dalo alespoň rozeznat, jsou jednotlivé resourcy očíslované.
Povol si CURL_HEADER, ať víš, co ti server odpovídá. Pokud máš CURLOPT_RETURNTRANSFER zakázané, tak to znamená, že dotaz proběhl vpořádku (a samotnou odpověď cURL vypíše); v opačném případě by curl_exec měl vrátit odpověď (což by byl nějaký string). |
||
quatzael Profil |
#7 · Zasláno: 9. 4. 2015, 22:05:33
juriad:
„Povol si CURL_HEADER, ať víš, co ti server odpovídá.“ Jak poznám co odpovídá? Povolil jsem si to, ale žádná změna nenastala.. pozn. CURLOPT_RETURNTRANSFER zakázané mám. Dá se nějak ověřit, že request představovaný $json je ok? Jako například, kdyby chběly nějaký data, nevrátilo by to nějaký upozornění nebo error?
|
||
Časová prodleva: 10 let
|
0