PHP将值发布到java servlet

时间:2010-08-23 03:56:03

标签: php servlets fopen

我想将一些值(例如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的新手。也请让我知道,因为我需要提供有关此问题的额外信息

由于

1 个答案:

答案 0 :(得分:1)

正如我在评论中所指出的,我会首先尝试回应网址。为此,请在调用fopen之前添加echo $url;。这将确认它是否获得正确的URL。

如果不是,那么你需要解决原因。

如果它获得了正确的URL,则有可能您的php安装未配置为使用远程(基于url)调用fopen。您可以获得here的一些详细信息。如果是这种情况,您只能在php.ini中更改它,这意味着如果您不在自己管理的盒子上,您的主机必须允许它。

注意:我们相信您可以通过致电allow_url_fopen

显示的信息中查找phpinfo();来检查此问题