2013-05-29 93 views
0

我知道有很多與此問題有關的問題,但我正面臨一個特定的要求,即將數據從PHP發佈到Rest Web Service的目的。上面解釋了細節,但總的來說,當我將數據發佈到url(REST WS)並設置CURLOPT_POSTFIELDS時,數據未被添加到請求中。未設置PHP發佈數據調用Java Rest Web服務

場景:我有很多作爲模塊運行的Java Web服務(REST),例如,我有一個fileUploadModule,它是一個REST,我有一個databaseModule,這是另一個休息,最後是一個SearchModule,它是另一個休息。

http://[MY IP]:8020/system.file.ws.module.ModuleFile/getResults/jsonp?fileName=fileName 
http://[MY IP]:8021/system.search.ws.module.ModuleSearch/getResults/jsonp?xmlQuery=myXml 

對於文件和數據庫的情況下,這是管理的代碼我使用的是通過連接到模塊的GWT前程序員:

我可以使用像一個鏈接直接調用他們我的休息模塊代理;例如:

http://[MY_PROXY_IP]:8013/system.file.ws.module.ModuleFile/getResults/jsonp?fileName=fileName 

,在我代理,我可以打印請求的值獲得,在這種情況下,我使用GET,我可以打印請求爲:

GET /system.file.ws.module.ModuleFile/getResults/jsonp?fileName=idc1&folderType=campaign&callback=__gwt_jsonp__.P0.onSuccess&failureCallback=__gwt_jsonp__.P0.onFailure HTTP/1.1 

。現在我負責搜索應該通過PHP運行。我直接測試的URL模塊和它的作品,但如果我嘗試給它不似乎是工作的代理,它達到我的代理,但是當我打印的要求是不完整的:

POST /system.search.ws.module.ModuleSearch/getResults HTTP/1.1 

我應該收到像模塊文件,我分享我的PHP代碼,似乎都是好的,但我不知道我能做什麼錯了...當我設置參數在CURLOPT_POSTFIELDS字符串不是正在設置

$url = "http://192.168.3.41:8013/system.search.ws.module.ModuleSearch/getResults"; 
try { 
$ch = curl_init(); 
curl_setopt ($ch, CURLOPT_URL, $url); 
curl_setopt ($ch, CURLOPT_POST, 1); 
$rawXml = $_POST['rawXml']; 
$rawXml = str_replace("%", "%25", $rawXml); 
$rawXml = str_replace("&", "%26", $rawXml); 
$rawXml = str_replace("=", "%3D", $rawXml); 
echo $rawXml; 
curl_setopt ($ch, CURLOPT_POSTFIELDS,'xmlQuery='.$rawXml); 
$info = curl_exec ($ch); 
curl_close ($ch); 
echo $info; 
} catch (Exception $e){ 
echo $e->getMessage(); 
} 

請我真的很感謝您的幫助或意見。比你提前很多。

+0

你是否試過用curl從命令行?例如 'curl --data「xmlQuery = {xmlquery}」http://192.168.3.41:8013/system.search.ws.module.ModuleSearch/getResults' –

+0

yes,但我沒有可用於終端的命令。 –

回答

0

經過很長時間,我沒有看到答案。我發現這段時間以前的失敗。發生此問題是因爲,當到達服務器端時,出於某種原因,我沒有注意到的批處理文件是爲我的內容添加了一行,並且每當我使用代理讀取請求內容時,我都會使用「\ n」分隔符,I意思是說,我一直在閱讀我的數據,用EOF指標作爲跳線,這就是爲什麼內容從未顯示。我不得不修改代理內部的代碼,以允許直到結束時纔讀取請求,而不是在找到「\ n」字符時。我的意思是,這個帖子的內容是在每一種情況下設定的,但是一個批處理過程正在破壞這些數據。所以那是個問題,我只是通過確保我的讀者始終閱讀我的整個文件,甚至考慮線跳和白線來解決它。

問候。