2016-11-02 2 views
0

현재 WebAPI (uTorrent)에 연결해야하는 앱이 있습니다. 나는이 사이트에 도달 할 때URLConnection을 사용하여 대화 상자에 로그인하는 방법은 무엇입니까?

그러나, 나는에 로그인해야합니다.

그것은 브라우저에서 다음과 같습니다

https://gyazo.com/cfb535c4ca1d7db2b16f1c14e3b8e9e6

어떻게이 대화 상자에 로그인 할 수 있습니까? username : password @ url이 작동하지 않는 것 같습니다.

HTTP 헤더를 사용하여 로그인하는 방법이 있습니까? 이것은 내가 로그인하여 쿠키를 얻는 나의 방법입니다. 그러나이 저를 기록하지 않았다

public String getCookie(String url, String post_data, int len) { 
    System.out.println(); 
    URL addr = null; 
    try { 
     addr = new URL(url); 
    } catch (MalformedURLException e) { 
     return "Malformed URL"; 
    } 
    StringBuffer data = new StringBuffer(); 
    HttpURLConnection conn = null; 
    try { 
     conn = (HttpURLConnection) addr.openConnection(); 
    } catch (IOException e) { 
     return "Open connection error"; 
    } 
    conn.setRequestProperty("Connection", "keep-alive"); 
    conn.setRequestProperty("Accept-Language", "ru,en-GB;q=0.8,en;q=0.6"); 
    conn.setRequestProperty("Accept-Charset", "utf-8"); 
    conn.setRequestProperty("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"); 
    conn.setRequestProperty("Cookie", ""); 
    conn.setDoOutput(true); 
    conn.setDoInput(true); 
    //conn.setInstanceFollowRedirects(true); 
    for (int i = 0; conn.getHeaderField(i) != null; i++) { 
     if(conn.getHeaderFieldKey(i).equals("Set-Cookie")) { 
      cookie = conn.getHeaderField(i); 
      System.out.println(conn.getHeaderFieldKey(i)); 
      System.out.println("COOKIE" + conn.getHeaderField(i)); 
     } 
    } 
    System.out.println("COOKIE HEADERS" + conn.getHeaderFields()); 
    return cookie; 
} 

를이 내가 전화하는 방법입니다. (1000 "http://192.168.1.5:8080/gui/token.html", "끝나면 uname = & PW = 로그인 암호")

readWebsite.getCookie을;

전체적인 방법이 나에게 이상하게 보입니다. 의도 한대로 작동하지 않습니다.하지만 여기에서 내가 찾은 유일한 방법입니다.

문제는 uTorrent의 공식 WebAPI가이 문제를 해결하는 방법을 전혀 언급하지 않는다는 것입니다.

"401 오류"-> 서버에서 무단으로 추가된다는 내용을 추가하고 싶습니다.

답변

0

대답은 오래 동안 발견되었지만 네트워크 보안을 보장 할 수는 없습니다. "Authorization"헤더를 추가해야합니다.

String authorization = "Basic " + new String(android.util.Base64.encode((auth).getBytes(), android.util.Base64.NO_WRAP)); 

    connection.setRequestProperty("Authorization", authorization); 
관련 문제