2017-01-02 10 views
4

私はこの値をテストし、javaに返信するためにサーバー上のPHPファイルにjavaクラスから値を渡そうとしています。問題はnull値を返します。javaからPHPに価値を渡すには?

Javaコード

package phpJava; 
import java.io.*; 
import java.net.URL; 
import javax.swing.JOptionPane; 
public class phpbirgde { 
public static void main(String[] args) { 
     try{ 
      String erg = JOptionPane.showInputDialog("2+3"); 
      BufferedReader br = new BufferedReader(new InputStreamReader(new URL("http://localhost//test.php?test="+erg).openStream())); 
        String b = br.readLine(); 
        System.out.println(b); // print the string b 
        if(b.equalsIgnoreCase("true")){ 
         System.out.println("It is true"); 
        } 
        else { 
         System.out.println("False"); 
        } 

      } catch(IOException e){ 
       System.out.println("error"); 
      } 
} 

    } 

PHPコード

<?php 
$test = $_GET['test']; 
if($test =="5"){ 
echo "true"; 
} 
else { 
echo "false"; 
} 
?> 
+0

nullを正確に返しますか? –

+0

問題を修正しました。ありがとうございます。 Javaにスペースを戻していました。このスペースは、 '<?php'タグの前にある 'HTML'から来ています。私のPHPファイルでは、 '<?php'タグの前にスペースがあり、それを修正したからです。 @ k5_ – Martin

答えて

0

URLURLConnectionクラス

String loc = "http://localhost//test.php?test="+erg; 
URL url = new URL(loc); 
URLConnection con = url.openConnection(); 
InputStream i = con.getInputStream(); 

を試してみてくださいそれ以外の場合は、お使いのPHPはOKに見えます。

2

それはcontractである:

public String readLine() throws IOException

は、テキストの行を読み込みます。行は、改行( '\ n')、改行( '\ r')、またはキャリッジリターン の直後に改行のいずれか1つで終了すると見なされます。

戻り

任意の行の終端文字を含まない行の内容を含む文字列、またはnull ストリームの終わりには、

に達して た場合あなたの場合、PHPスクリプトはtrue文字列(\nなし)を出力ストリームに出力し、接続を閉じます。

したがって、\necho "true\n";)をPHP側に追加するか、別の方法を使用してJava側から応答を読み込みます。

1

問題は、PHPファイルの前にスペースを入れて、スペースだけを返していたことです。 このコードは完全に機能します。

+0

それは、あなたのPHPファイルの最後に '?>'の後ろに余分な "行末"文字があると思うよりも、そのまま動作します。それを削除しようとすると、 'end-of-line'文字が' readLine() 'のために必須であるため、再び改行されます。 – djxak

関連する問題