2012-09-03 5 views
0

브라우저에서 웹 페이지를 열었을 때 성공적으로 웹 페이지에 연결할 수 있습니다. 그러나 자바 온라인에서 웹 페이지의 소스 코드를 얻는 것에 지쳤을 때, 웹 페이지는 자동으로 다른 페이지로 리다이렉션되었고, 그래서 나는 나의 프로그램에서 새로운 웹 페이지의 소스 코드만을 얻을 수 있었다. 자바에서 이러한 리디렉션 문제를 깰 수있는 방법이 있습니까?URLConnection을 사용하여 다른 페이지로 자동으로 리디렉션되었을 때 원본 웹 페이지 소스 코드를 가져 오는 데 어려움이 있습니다.

많은 Thx.

다음은 내 프로그램에서 소스 코드를 가져 오는 부분입니다.

대상 웹 페이지는 중국에서 가장 큰 인터넷 회사 (Baidu)에 속한 온라인 커뮤니티 웹 페이지 (Facebook과 같습니다)입니다.

다음 프로그램을 실행하면 콘솔에 게시 된 웹 페이지 소스 코드가 브라우저에서 가져올 수있는 코드가 아님을 알 수 있습니다. 콘솔에 게시 된 소스 코드는 다음 웹 페이지에서 찾을 수있는 내용과 거의 동일합니다. http://www.baidu.com/search/ressafe.html?q=%E5%AE%AB%E5%B4%8E%E9%AA%8F%E5%90%A7&url=http://tieba.baidu.com/f?kw=%B9%AC%C6%E9%BF%A5

웹 페이지가 리디렉션 된 것으로 나타납니다.

import java.net.*; 
import java.io.*; 
import java.util.*; 

public class URLConnectTest { 

    public static final String s = "%B9%AC%C6%E9%BF%A5"; 

    public static void main(String[] args) throws Exception { 
     URL u = new URL("http://tieba.baidu.com/f?kw=" + s); 
     URLConnection yc = u.openConnection(); 

     /* I've ever tried to reset the UA, which doesn't work. 
     yc.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.0; WOW64) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.16 Safari/534.24"); 
     */ 

     BufferedReader in = new BufferedReader(new InputStreamReader(yc.getInputStream())); 
     String line; 
     while ((line = in.readLine()) != null) { 
      System.out.println(line); 
     } 
    } 
} 
+1

모든 브라우저 유형에서이 동작이 발생합니까? – UVM

+0

내 질문의 혼란스러운 부분에 대해 죄송합니다. 자바가 아닌 브라우저에서 소스 코드를 가져 오려고하면 뭔가 잘못되었습니다. –

답변

0

HTTPURLConnection 당신이 그것을 사용하지 않으려면, HTTPURLConnection.setInstanceFollowRedirects(false) 전화, 자동으로 HTTP 리디렉션을 따릅니다.

+0

아직도 문제가 있습니다 ... 이제 "301 Moved Permanently"이 생깁니다. –

+0

예, 예상했는데 그게 당신이 원한 것이라고 생각 했거든요 (당신은 ** 당신의 질문에 리다이렉션 문제 **를 풀고 싶다고 말했죠). 이제는 결과가 마음에 들지 않는 것처럼 보이므로 문제를 더 잘 설명하고 코드를 첨부해야합니다. – neevek

+0

소스 코드를 얻고 싶었던 코드와 웹 페이지를 포함하여 더 많은 세부 정보를 업로드했습니다. –