0

我不知道为什么,但是当我使用 URLConnection 向 url 发送 http post 请求时,我可以很好地返回,但是当我在 if 语句中使用它时,它停止工作。该程序可以编译所有这些,但是如果我要使用它向包含 的网页发送 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方法,而不是==.

因为 == 只能检测两个字符串是否是同一个实例,而不是它们是否包含相同的值。

所以你的测试应该是:

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

请注意,我将“是”写为 equals 方法的接收者,因为answer.equals("yes")当答案为 null 时,写入会导致 NullPointerException。在这种情况下,没有答案为空的风险,但这是一个好习惯。

于 2012-06-09T20:02:41.300 回答