2014-11-02 3 views
0

이 URL의 텍스트 두 번째 줄 "http://vuln2014.picoctf.com:51818/"을 읽으려고합니다 (이것은 깃발 잡기 대회이지만 국기에 대한 지시 또는 깃발에 대한 지시만으로 경기 규칙을 위반 함). URL에서 입력 스트림을 열려고하지만 잘못된 HTTP 응답 예외가 발생합니다. 어떤 도움을 주시면 감사하겠습니다. 제 실수가 아주 어리 석다는 것을 알고 있습니다.Java로 인터넷에서 텍스트 파일을 읽으려면 어떻게해야합니까?

코드 :

URL url = new URL("http://vuln2014.picoctf.com:51818"); 
URLConnection con = url.openConnection(); 
InputStream is = con.getInputStream() 

오류는 세 번째 줄에서 발생한다. 때 java.io.IOException : name.main에서 sun.net.www.protocol.http.HttpURLConnection.getInputStream (HttpURLConnection.java:1342)에서 잘못된 HTTP 응답 (name.java:41가)

행복하게 가져가 휘어서 페이지의 텍스트이며 웹 브라우저에서 완벽하게 액세스 할 수 있습니다.

+0

stacktrace는 무엇이라고 말합니까? –

+0

2 시간 전과 똑같은 질문을하지 않았습니까? –

+0

@HovercraftFullOfEels : (원래) –

답변

2

당신이 할 때 :

URL url = new URL("http://vuln2014.picoctf.com:51818"); 
URLConnection con = url.openConnection(); 

당신이 URL은 http 프로토콜을 사용하는 것을 말한다 계약을 체결하고 있습니다. openConnection에 전화 할 때 http 응답을 받으려면 프로토콜에 URL에 http://을 사용했기 때문에 응답해야합니다. Java Documentation는 말한다 : java.lang의, 자바 :

이 URL의 프로토콜 (예 : HTTP 나 JAR 등) 경우, 패키지, 혹은 그 서브 패키지에 속하는 일반 또는 특수한 URLConnection 서브 클래스가 존재한다. io, java.util, java.net의 경우, 반환되는 접속은 그 서브 클래스의 것이됩니다. 예를 들어 HTTP의 경우 HttpURLConnection이으로 반환되고 JAR의 경우 JarURLConnection이 반환됩니다.

연결하려는 서버가 몇 줄의 데이터 만 반환합니다. 나는 nc vuln2014.picoctf.com 51818 명령으로 그것들을 찾았다.

에 오신 것을 환영합니다 다달 루스 공사에 RSA 키 생성 서비스는 스파이 : HTTP/1.1 200 OK 같은 더 http 응답 코드가 없습니다. 업데이트를 보내는 데 사용하는 공용 계수는 다음과 같습니다. 내가 연결을 설정하는 데 java.net.Socket을 사용하여 다음 라인을 읽을 것이 경우

b4ab920c4772c5247e7d89ec7570af7295f92e3b584fc1a1a5624d19ca07cd72ab4ab9c8ec58a63c09f382aa319fa5a714a46ffafcb6529026bbc058fc49fb1c29ae9f414db4aa609a5cab6ff5c7b4c4cfc7c18844f048e3899934999510b2fe25fcf8c572514dd2e14c6e19c4668d9ad82fe647cf9e700dcf6dc23496be30bb 지수 65537. 를 사용해야합니다.

Socket theSocket; 
try { 
    theSocket = new Socket("vuln2014.picoctf.com", 51818); 
    BufferedReader inFile = new BufferedReader(new InputStreamReader(theSocket.getInputStream())); 

    String strGreet = inFile.readLine(); 
    String strData = inFile.readLine(); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 

왜 곱슬 곱슬하고 브라우저를 제대로 렌더링 수에 관해서는이 데이터의 2 선이 단순한 접근 방식을지지된다? 그들은 읽은 데이터에 대해 좀 더 관대 할 수 있으며 지정된 프로토콜 (예 : http)을 따르지 않더라도 포트에서 읽은 내용을 덤프합니다.

+0

도움을 주셔서 감사합니다. 나는 어리 석다. 나는 의심한다. –

+0

@ JohnDrake 당신은 바보가 아니며, 문제가 무엇인지 잘못 알지도 못했습니다. –

+1

@ 존 드레이크 : 당신이 당신을 도운 이후로이 대답을 upvote하고 [accept] (http://stackoverflow.com/help/someone-answers) 잊어 버리면 당신은 단지 바보입니다. 그의 노력에 대해 Michael에게 감사하는 가장 좋은 방법. 1+은 저도 마찬가지입니다. –

관련 문제