0

理由はわかりませんが、URLConnectionを使用してhttp postリクエストをURLに送信すると、rhe returnは正常に返されますが、ifステートメントで使用すると機能しなくなります。プログラムはコンパイルされますが、それを使用して、を含むWebページにhttpリクエストを送信する場合yes、コードを使用するとif(answer.toString == "yes")、if部分内のコードは実行されません。おそらくラインセパレーターなどと関係があることは知っていますが、修正方法を教えてもらえますか。

変数を取得するために使用されるコードanswer

String data="param1=test1&param2=test2";
try{
  URL lUrl=new URL("http://localhost/test.php");
  URLConnection conn=lUrl.openConnection();
  conn.setDoOutput(true);
  OutputStreamWriter writer=new OutputStreamWriter(conn.getOutputStream());
  writer.write(data);
  writer.flush();
  StringBuffer answer=new StringBuffer();
  BufferedReader reader=new BufferedReader(new InputStreamReader(conn.getInputStream()));
  String line;
  while((line=reader.readLine())!=null){
    answer.append(line);
  }
  writer.close();
  reader.close();
  if(answer.toString()=="yes"){
    System.out.print("1");
  }else{
    System.out.print(answer.toString());
  }
}catch(MalformedURLException ex){
  ex.printStackTrace();
}catch(IOException ex){
  ex.printStackTrace();
}
4

1 に答える 1

1

Java文字列を比較するにはequals、ではなくメソッドを使用し==ます。

==は、2つの文字列が同じインスタンスであるかどうかのみを検出でき、同じ値が含まれているかどうかは検出できないためです。

したがって、テストは次のようになります。

if ("yes".equals(answer)) {

answer.equals("yes")答えがnullの場合にNullPointerExceptionが発生するため、equalsメソッドの受信者として「yes」と書くことに注意してください。この場合、答えがnullになるリスクはありませんが、それは良い習慣です。

于 2012-06-09T20:02:41.300 に答える