使用Curl捕获通过POST从PHP发送到Java Rest WS的输入参数


Catch the input parameter sent through POST from PHP to Java Rest WS through Java Proxy using Curl

我一直在开发一个应用程序,它涉及使用PHP脚本作为客户端和Java Restful WS。

PHP使用WS的方式是通过POST使用curl:
$url = "http://192.168.3.41:8013/module.ModuleSearch/getResults/jsonp"; 
$xmlParam = 'xmlQuery='.$rawXml;
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, 1);      
curl_setopt($ch, CURLOPT_POSTFIELDS,$xmlParam);
$info = curl_exec ($ch);
curl_close ($ch);
echo $info;

对于应用程序的需求,我有一个代理,它正在监听我所有的请求,这个代理需要接收URL,因为我需要从URL中提取一些元素,如参数。

当我使用GET时,没有问题,在代理中使用Java套接字,我可以从输入流中检索几乎所有的数据;例如:

|DETECTED|-===========> GET /module.ModuleSearch/getResults/jsonp?idFolder=idPub1&callback=__gwt_jsonp__.P0.onSuccess&failureCallback=__gwt_jsonp__.P0.onFailure HTTP/1.1
|DETECTED|-===========> Host: 192.168.3.41:8013
|DETECTED|-===========> Connection: keep-alive
|DETECTED|-===========> User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Ubuntu Chromium/23.0.1271.97 Chrome/23.0.1271.97 Safari/537.11
|DETECTED|-===========> Accept: */*
|DETECTED|-===========> Referer: http://dev.test.server/php/scriptTest/phpTest.php?idFolder=idPub1/back5&uid=xx&portalIp=192.168.3.41&port=8013
|DETECTED|-===========> Accept-Encoding: gzip,deflate,sdch
|DETECTED|-===========> Accept-Language: es-419,es;q=0.8
|DETECTED|-===========> Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
|DETECTED|-===========> 

但是在post的情况下,我只检索:

2013-06-03 07:52:19,012 [myid:] - DEBUG [Thread-2:FirstLineScanner@55] - -|DETECTED|-===========> POST /module.ModuleSearch/getResults/jsonp HTTP/1.1
2013-06-03 07:52:19,311 [myid:] - DEBUG [Thread-2:FirstLineScanner@55] - -|DETECTED|-===========> Host: 192.168.3.41:8013
2013-06-03 07:52:19,502 [myid:] - DEBUG [Thread-2:FirstLineScanner@55] - -|DETECTED|-===========> Accept: */*
2013-06-03 07:52:20,125 [myid:] - DEBUG [Thread-2:FirstLineScanner@55] - -|DETECTED|-===========> Content-Length: 31
2013-06-03 07:52:20,404 [myid:] - DEBUG [Thread-2:FirstLineScanner@55] - -|DETECTED|-===========> Content-Type: application/x-www-form-urlencoded
2013-06-03 07:52:21,011 [myid:] - DEBUG [Thread-2:FirstLineScanner@55] - -|DETECTED|-===========> 

我知道当您使用POST时,数据不能像get一样接收,但是是否有任何方法可以提取参数或完整的请求URL,如get ?

如果有人能帮助我,我将非常感激。非常感谢。

我解决了这个问题,这很容易。Get总是在URL(头部部分)中检索参数,而POST在主体部分中有参数。我的Java类实际上是问题所在,因为它只检索标题,因为它迭代收到的请求,而它有行,如果它检测到和空行,循环中断,但是要将标题与正文分开,它们之间必须有两个空行,所以这就是为什么我看不到我的参数。希望它能帮助到有同样问题的人,谢谢!