2016-05-04 12 views
0

PostgreSQLデータベースからデータを取得し、JSONの形式で返すNode.jsサーバーを構成しました。JSON Web API .. PHPで消費されても応答がありません

URLは次のとおりです。

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":""}} 

私は何も応答が返ってこないPHPでそれを消費しようとすると、私は、Webブラウザでそれをロードしたとき、それが正常な応答を返しますが。

これは私の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

PHPでURLをエンコードしていますか? – Chris

+0

私はちょうど上記のコード – user32876

+0

とPHPでそれを呼びましたまあまあそれはURLをエンコードしようとすると、それは現時点では有効なURLではないので。 – Chris

答えて

2

問題はクエリパラメータとしてJSON文字列が有効なURL文字列ではないということです。あなたは、URLエンコードするためにそれをする必要があります:

<?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; 

?> 

言った、あなたはサーバーへデータを送っていることから、あなたがオフにはるかに良いだろう(と、それはより多くのRESTfulなだろう)これを設定しますGETの代わりにPOST requestとしてください。

+0

ありがとう兄弟.. – user32876

+0

私はlocalhostの代わりにライブウェブサイトで同じコードを実行しようとすると、実行されません。 – user32876

+0

"*試行中139.59.232.218 ... * 139.59.232.218の即時接続失敗:ネットワークに到達できません *接続を閉じる0" – brandonscript

関連する問題