2013-05-29 68 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”字符时。我的意思是,这个帖子的内容是在每一种情况下设定的,但是一个批处理过程正在破坏这些数据。所以那是个问题,我只是通过确保我的读者始终阅读我的整个文件,甚至考虑线跳和白线来解决它。

问候。