我知道有很多与此问题相关的问题,但我面临着将数据从 PHP 发布到 Rest Web 服务的特定要求。上面解释了详细信息,但总而言之,当我将数据发布到 url (REST WS) 并设置 CURLOPT_POSTFIELDS 时,数据不会被添加到请求中。
场景:我有很多作为模块运行的 Java Web 服务 (REST),例如,我有一个作为 REST 的 fileUploadModule,我有一个作为另一个 REST 的 databaseModule,最后是一个作为另一个 REST 的 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();
}
请非常感谢您的帮助或意见。比你提前很多。