2016-05-04 8 views
0

Ich konfigurierte einen Node.js Server, der Daten aus einer PostgreSQL-Datenbank holt und die Antwort in Form von JSON zurückgibt.JSON Web API .. Keine Antwort in wenn in PHP konsumiert

Die URL lautet:

http://139.59.232.218:3000/odoo-client?client_req={"opts" : {"login" : "admin","password" : "admin","db" : "cctv_prod_db","host": "139.59.232.218","port": "80"},"moduleDetail" : {"model" : "product.category","method" : "search","args" :[],"filter" : ["sub_category_type","ilike","service"],"fields" : "","domain" : "","offset" : "","limit" : "","sort" : "","resource_id":""}} 

Während es erfolgreich die Antwort zurückgibt, wenn ich es in einem Web-Browser zu laden, wenn ich versuche, es in PHP verbrauchen keine Antwort zurückgegeben wird.

Das ist mein php:

$ch = curl_init($url); 
curl_setopt($ch, CURLOPT_TIMEOUT, 5); 
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
$data = curl_exec($ch); 
curl_close($ch); 
echo $data; 
+0

Sind Sie URL-Codierung dieser URL in PHP? – Chris

+0

Ich habe es gerade in PHP mit dem obigen Code – user32876

+0

aufgerufen Nun, vielleicht versuchen URL-Codierung, denn im Moment ist es keine gültige URL. – Chris

Antwort

2

Das Problem ist, dass der JSON-String als Abfrageparameter keine gültige URL-Zeichenfolge ist. Sie müssen URL-Codierung es:

<?php 

$url = 'http://139.59.232.218:3000/odoo-client?client_req='.urlencode('{"opts" : {"login" : "admin","password" : "admin","db" : "cctv_prod_db","host": "139.59.232.218","port": "80"},"moduleDetail" : {"model" : "product.category","method" : "search","args" :[],"filter" : ["sub_category_type","ilike","service"],"fields" : "","domain" : "","offset" : "","limit" : "","sort" : "","resource_id":""}}'); 

$ch = curl_init($url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_VERBOSE, 1); 
$data = curl_exec($ch); 
curl_close($ch); 
echo $data; 

?> 

das gesagt ist, da Sie Senden Daten an den Server sind, dann würden Sie viel besser (und es wäre mehr RESTful) sein, dies zu setzen als ein POST request anstelle eines GET.

+0

Danke Bruder .. – user32876

+0

wenn ich versuche, den gleichen Code auf Live-Website statt localhost laufen es läuft nicht. – user32876

+0

„* 139.59.232.218 Des Versuch ... * Sofortige Verbindung für 139.59.232.218 fehlschlagen: Netzwerk ist nicht erreichbar * Schlussverbindung 0“ – brandonscript