2016-11-02 8 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; 
} 

これは私がそれを呼び出す方法です:。

readWebsite.getCookie( "http://192.168.1.5:8080/gui/token.html"、 "は、una​​me =ログイン& PW =パスワード"、1000);

全体の方法が私には奇妙に見えますが、意図したとおりに動作していませんが、これが私がここで見つけた唯一のものです。

問題は、uTorrent用の公式WebAPIには、これを修正する方法がまったく言及されていないことです。

私は、 "401エラー" - >サーバから無傷になったと付け加えたいと思います。

答えて

0

私は長いこと答えを見つけましたが、ネットワークセキュリティを保証するものではありません。 「認証」ヘッダーを追加する必要があります。

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

    connection.setRequestProperty("Authorization", authorization); 
関連する問題