2013-11-01 7 views
0

URL에 연결하려고합니다. 사용자 이름과 비밀번호가있는 java에서 URLConnection을 사용하려고합니다. =================================사용자 이름, 비밀번호, 토큰을 사용하여 Java의 URLConnection

package com.nivi.org.client; 

import java.io.BufferedReader; 
import java.io.BufferedWriter; 
import java.io.File; 
import java.io.FileWriter; 
import java.io.IOException; 
import java.io.InputStreamReader; 
import java.net.MalformedURLException; 
import java.net.URL; 
import java.net.URLConnection; 

import com.sun.jersey.core.util.Base64; 

public class GetURLContent { 
    public static void main(String[] args) { 

     URL url; 

     try { 

      url = new URL("http://sampleurl.co.uk"); 

      URLConnection conn = url.openConnection(); 


      String username = "username"; 
      String password = "password"; 
      String Token = "zzzzzzzzzzzzzzzzzzzzz"; 


      System.setProperty("http.proxyHost", "proxyhostname"); 
      System.setProperty("http.proxyPort", "8080"); 


      String userpass = username + ":" + password; 
      String basicAuth = "Basic " + new String(new Base64().encode(userpass.getBytes())); 
      conn.setRequestProperty ("Authorization", basicAuth); 
      conn.setRequestProperty ("Token", Token); 


      BufferedReader br = new BufferedReader(
           new InputStreamReader(conn.getInputStream())); 

      System.out.println("br............."+br.toString()); 

      br.close(); 

      System.out.println("Done"); 

     } catch (MalformedURLException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

    } 
} 

: 이것은 내가 사용하고있는 다음 코드입니다 ====== 나는 다음과 같은 오류

java.io.IOException: Server returned HTTP response code: 403 for URL: 
http://sampleurl.co.uk 
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1625) 
    at com.nivi.org.client.GetURLContent.main(GetURLContent.java:63) 

============================== 무엇입니까 =========

먼저 내 질문은 코드의 다음 줄이 맞습니까?

conn.setRequestProperty ("Authorization", basicAuth); 
    conn.setRequestProperty ("Token", Token); 
+1

내가 HHTP 또는 https를 사용하여 어떤 프로토콜을 사용하는지 알 수 있으며 사용자 이름 만 전달하므로 passowrd를 포함한 사용자 이름을 전달해야합니다. 인증을 위해 두 값을 모두 전달해야합니다. – sravan

답변

0

는 코드에서이 다음 줄이 올바른지 있습니까?

액세스하는 실제 웹 사이트가 사용자 인증을 구현하는 방식에 따라 다릅니다.

HTTP 기본 인증 (예 : Authorization 헤더)과 Token이라는 비표준 헤더와 관련된 것의 조합입니다. 웹 사이트에서 기본 인증을 지원하는 경우이 방법으로 충분할 수 있습니다.


해당 웹 API의 작동 방식에 대한 웹 사이트의 프로그래머 문서를 읽어야합니다. 사용 가능한 문서가없는 경우 브라우저 웹 개발 도구를 사용하여 웹 브라우저를 통해 로그인 할 때 사이트가 사용하는 메커니즘을 식별하고 클라이언트가 동일한 방식으로 작동하도록 시도하십시오.


HTTP 요청에서 기본 인증 응답을 보내는 것이 안전하지 못합니다. 옵션 인 경우 HTTPS 요청을 사용하십시오.