2012-06-09 4 views
0

URLConnection을 사용하여 url에 대한 http 게시물 요청을 보내면 그 값을 얻을 수 있지만 if 문에서 사용할 때 작동을 멈 춥니 다. 프로그램이 컴파일되고 모든 내용이 포함되어 있지만, 웹 페이지에 http 요청을 보내기 위해 yes이 포함되어 있고 코드 if(answer.toString == "yes")을 사용하면 if 부분 안에 코드가 실행되지 않습니다. 아마 라인 분리 자 (line seperators) 등과 관련이 있을지는 모르지만, 누군가 그것을 어떻게 고칠 수 있는지를 지적 할 수 있습니다.Java If 문이 URLConnection에서 읽은 값을 사용하여 작동하지 않습니다.

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(); 
} 

답변

1

equals 방법이 아닌 ==를 사용, 자바 문자열을 비교하려면 :

코드는 변수 answer를 취득 할 경우에 사용합니다.

왜냐하면 ==는 두 문자열이 같은 인스턴스인지 아닌지를 감지 할 수 있기 때문에 같은 값을 포함하지 않습니다.

그래서 테스트는해야한다 : 대답은 null의 경우 answer.equals("yes")를 작성하는 것은 NullPointerException이 발생할 수있어 내가 equals 메소드의 수신자로 "예"쓰기

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

참고. 이 경우 응답이 null 일 위험이 없지만 좋은 습관입니다.

+0

Sweet, its working now – Matthew

관련 문제