Как загрузить URL, который требует входа в переменную? - PullRequest
1 голос
/ 01 мая 2010

Я пытаюсь перенести свой счетчик использования с гаджета JavaScript (win) / Widget (OSX) на Android. Абсолютно новичок, когда приходит на JAVA + Eclipse + Android 2.1 SDK. По сути, я хочу загрузить страницу, передать имя пользователя и пароль и загрузить получившуюся страницу в массив, через который я затем смогу выполнить некоторые регулярные выражения.

Мой код из JavaScript (я заменил реальный URL на фиктивный):

xmlhttp.open("post","https://acme.com.au/your_account/index.php?function=login",false);
xmlhttp.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xmlhttp.send("check_username=" + username + "&password=" + password);

Мне нужно знать Android, эквивалентный приведенному выше, пожалуйста. Я поиграл с WebView, но он загружает страницу в веб-браузер, а это не то, что мне нужно.

1 Ответ

0 голосов
/ 01 мая 2010

Если вы не хотите включать стороннюю библиотеку, вы можете сделать что-то вроде следующего:

URL url = new URL("https://acme.com.au/your_account/index.php?function=login");

HttpURLConnection conn = (HttpURLConnection) url.openConnection();

// If you need a cookie from previous requests
//conn.setRequestProperty("Cookie", "JSESSIONID=" + encode(jSessionId, "UTF-8")); 
conn.setRequestProperty("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");

conn.setRequestMethod("POST");
conn.setDoOutput(true);
conn.setDoInput(true);

DataOutputStream out = new DataOutputStream(conn.getOutputStream());
out.writeBytes(String.format("check_username=%s&password=%s",
        URLEncoder.encode(PERSNR, "UTF-8"),
        URLEncoder.encode(PASSWD, "UTF-8")));

out.close();

// I have absolutely no idea why this is needed.
InputStream is = conn.getInputStream();
// ... read the response from is.
is.close();

Однако я призываю вас использовать стороннюю библиотеку для чего-то менее тривиального, чем эта. Я использую Apache HttpClient в своем виджете Android:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...