我想将一些值(例如boolean)从php文件发布到我的Java Servlet。
它基本上是我试图实现的通知系统。功能是用户向网站发布问题(使用php构建),当他得到他的问题的答案时,我应该能够通过从我的php文件到java servlet的布尔值。
我正在使用的php函数是
function do_post_request($ url,$ data,$ optional_headers = null) {
$params = array('http' => array(
'method' => 'POST',
'content' => $data
));
if ($optional_headers!== null) {
$params['http']['header'] = $optional_headers;
}
$ctx = stream_context_create($params);
$fp = fopen($url, 'rb', false, $ctx);
if (!$fp) {
**echo '<br>echo in if statement <br>';**
throw new Exception("Problem with $url, $php_errormsg");
}
$response = @stream_get_contents($fp);
if ($response === false) {
throw new Exception("Problem reading data from $url, $php_errormsg");
}
return $response;
}
这个方法总是回应“if if语句中的echo”。这意味着fp的值为null,这对我来说意味着我提供的URL是错误的。
但我提供的URL基本上是一个java servlet,我可以在我的网络浏览器中打开它。
所以任何人都可以帮助我。
我会要求详细解释任何建议的PHP代码修改,因为我是php的新手。也请让我知道,因为我需要提供有关此问题的额外信息
由于
答案 0 :(得分:1)
正如我在评论中所指出的,我会首先尝试回应网址。为此,请在调用fopen之前添加echo $url;
。这将确认它是否获得正确的URL。
如果不是,那么你需要解决原因。
如果它获得了正确的URL,则有可能您的php安装未配置为使用远程(基于url)调用fopen。您可以获得here的一些详细信息。如果是这种情况,您只能在php.ini中更改它,这意味着如果您不在自己管理的盒子上,您的主机必须允许它。
注意:我们相信您可以通过致电allow_url_fopen
phpinfo();
来检查此问题