目前我有一个应该连接到WebAPI(uTorrent)的应用程序。
但是,当我尝试访问该网站时,我必须登录。
在我的浏览器中看起来像这样
https://gyazo.com/cfb535c4ca1d7db2b16f1c14e3b8e9e6
如何登录此对话框?用户名:密码@ url似乎无法正常工作。
有没有办法使用Http Headers登录?这是我的方法,我应该登录并获取cookie。然而,这并没有让我登录。
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”, “UNAME =登录&安培; PW =密码”,1000);
整个方法对我来说看起来很奇怪,它绝对不符合我的意图,但这是我在这里找到的唯一的东西。
问题是uTorrent的官方WebAPI根本没有提到如何解决这个问题。
我想补充一点,我收到“401错误” - >来自服务器的unathorized。
答案 0 :(得分:0)
我早就找到了一个有效的答案,但我无法保证任何网络安全。您需要添加“授权”标题。
String authorization = "Basic " + new String(android.util.Base64.encode((auth).getBytes(), android.util.Base64.NO_WRAP));
connection.setRequestProperty("Authorization", authorization);