我正在尝试将一些数据(一个JSON字符串)从php脚本发布到java服务器(全部由我自己编写)并获取响应。 我尝试了以下代码:
$url="http://localhost:8000/hashmap";
$opts = array('http' => array('method' => 'POST', 'content' => $JSONDATA,'header'=>"Content-Type: application/x-www-form-urlencoded"));
$st = stream_context_create($opts);
echo file_get_contents($url, false,$st);
现在,这段代码实际上有效(我得到的结果是正确答案),但是file_get_contents在执行时每次都会挂起20秒(我打印了指令前后的时间)。服务器执行的操作在很短的时间内执行,我确信等待所有这些时间来获得响应是不正常的。 我错过了什么吗?
答案 0 :(得分:1)
错误配置错误的服务器可能无法发送正确的内容大小并使用HTTP / 1.1。
修复服务器或请求数据为HTTP / 1.0
答案 1 :(得分:0)
尝试将Connection: close
和Content-Length: strlen($JSONDATA)
标题添加到$opts
。
此外,如果您想避免使用扩展,请查看我前段时间写过的this class仅使用PHP内核执行HTTP请求。它适用于PHP4(这就是我写它的原因)和PHP5,它唯一需要的扩展是OpenSSL,如果你想做一个HTTPS请求,你只需要它。在顶部的评论中记录(ish)。
支持各种内容 - GET,POST,PUT等,包括文件上传,Cookie,自动重定向处理。我在一个平台上经常使用PHP / 4.3.10并且工作得非常好的平台上使用了很多...即使我自己这么说...