2010-08-23 7 views
0

Je souhaite publier des valeurs (par exemple, boolean) d'un fichier php vers ma servlet Java.Valeurs de publication PHP pour le servlet Java

C'est fondamentalement un système de notification que j'essaye de mettre en application. La fonctionnalité est qu'un utilisateur publie une question à un site Web (construit utilisant php) et quand jamais il obtient une réponse à sa question, je devrais pouvoir passer une valeur booléenne de mon fichier php au servlet Java.

La fonction php j'utilise pour que cela fonctionne est

fonction 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; 
    } 

Et cette méthode fait écho toujours « écho dans if statement ". Cela signifie que la valeur de fp est nulle ET que cela signifie pour moi que l'URL fournie est fausse.

Mais l'URL que j'ai fournie est fondamentalement une servlet java et je peux l'ouvrir dans mon navigateur web.

Donc, quelqu'un peut-il m'aider à ce sujet.

Je demande une explication détaillée des modifications du code php proposées comme je suis nouveau à php.Also s'il vous plaît laissez-moi savoir Incase je dois fournir des informations supplémentaires sur cette question

Merci

+0

Pour vérifier l'URL, l'écho quelque part. Cela confirmera si cela va ou pas où vous pensez qu'il va. –

+0

J'ai fait écho à l'url.Cela m'a confirmé que je reçois la bonne URL – Barry

Répondre

1

Comme je l'ai noté dans les commentaires, je voudrais d'abord essayer de faire écho à l'URL. Pour ce faire, ajoutez echo $url; juste avant l'appel à fopen. Cela confirmera si oui ou non il obtient la bonne url.

Si ce n'est pas le cas, vous devrez alors résoudre le problème.

S'il obtient la bonne URL, il est possible que votre installation de php ne soit pas configurée pour fonctionner avec les appels distants (basés sur l'URL) pour ouvrir. Vous pouvez obtenir quelques détails sur ce here. Si tel est le cas, vous ne pouvez le modifier que dans php.ini, ce qui signifie que votre hôte doit l'autoriser si vous n'êtes pas sur une boîte que vous administrez vous-même.

Note: Je crois que vous pouvez vérifier cela en recherchant allow_url_fopen dans les informations affichées par un appel à phpinfo();

+0

Le allow_url_fopen est ON pour le local ainsi que le maître. Depuis que j'utilise http, les wrappers par défaut sont fournis pour cela. Corrigez-moi si je me trompe. Alors, y a-t-il autre chose dont je doive prendre soin? – Barry