我知道有很多与此问题有关的问题,但我正面临一个特定的要求,即将数据从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();
}
请我真的很感谢您的帮助或意见。比你提前很多。
你是否试过用curl从命令行?例如 'curl --data“xmlQuery = {xmlquery}”http://192.168.3.41:8013/system.search.ws.module.ModuleSearch/getResults' –
yes,但我没有可用于终端的命令。 –