0

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

PHP 使用 WS 的方式是通过使用 curl 的 POST:

$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 中那样接收数据,但是有没有办法像在 GET 中那样提取参数或完整的请求 URL?

请如果有人可以帮助我,我将非常感激。非常感谢您提前。

4

1 回答 1

0

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

于 2013-06-17T17:05:42.283 回答