PHP отправляет значения в сервлет Java - PullRequest
0 голосов
/ 23 августа 2010

Я хотел бы опубликовать некоторые значения (например, логические) из файла php в мой сервлет Java.

Это в основном система уведомлений, которую я пытаюсь реализовать. Функциональность заключается в том, что пользователь публикует сообщениявопрос к веб-сайту (созданный с использованием php), и когда он получит ответ на свой вопрос, я смогу передать логическое значение из моего php-файла в сервлет java.

Используемая мной функция phpдля этого работает

функция do_post_request ($ url, $ data, $ option_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». Это означает, чтозначение fp равно нулю И это означает для меня, что предоставленный мною URL неверен.

Но указанный мною URL является в основном сервлетом Java, и я могу открыть его в своем веб-браузере.

Так что кто-нибудь может мне помочь в этом.

Я бы попросил подробное объяснение любых модификаций php-кода, предложенных, поскольку я новичок в php. Также, пожалуйста, дайте мне знать, если мне нужно предоставить дополнительную информациюormation по этому вопросу

Спасибо

1 Ответ

1 голос
/ 23 августа 2010

Как я заметил в комментариях, я сначала попытался бы повторить URL.Для этого добавьте echo $url; непосредственно перед вызовом fopen.Это подтвердит, получает ли он правильный URL-адрес.

Если это не так, то вам нужно будет решить, почему нет.

Если он получает правильный URL-адрес, существуетвероятность того, что ваша установка php не настроена для работы с удаленными (на основе URL) вызовами fopen.Вы можете получить некоторые подробности об этом здесь .Если это так, вы можете изменить его только в php.ini, что означает, что ваш хост должен разрешить это, если вы не в ящике, которым вы управляете.

Примечание.для этого ищем allow_url_fopen в информации, отображаемой при вызове phpinfo();

...