Я использую следующий код в Netbeans (или Eclipse без Android) для входа на страницу и извлечения ее HTML-источника. Это прекрасно работает, и он печатает источник HTML. Тем не менее, когда я использую тот же самый точный код в Android и устанавливаю полученный HTML-источник в textView или пытаюсь распечатать его как Toast, он возвращает полностью пустую строку.
импорт
public class LogTest {
public String doSubmit(String url, Map<String, String> data) throws Exception {
URL siteUrl = new URL(url);
HttpURLConnection conn = (HttpURLConnection) siteUrl.openConnection();
conn.setRequestMethod("POST");
conn.setDoOutput(true);
conn.setDoInput(true);
DataOutputStream out = new DataOutputStream(conn.getOutputStream());
Set keys = data.keySet();
Iterator keyIter = keys.iterator();
String content = "";
for (int i = 0; keyIter.hasNext(); i++) {
Object key = keyIter.next();
if (i != 0) {
content += "&";
}
content += key + "=" + URLEncoder.encode(data.get(key), "UTF-8");
}
out.writeBytes(content);
out.flush();
out.close();
BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line = "";
String html = "";
while ((line = in.readLine()) != null) {
html += line + "\n";
}
in.close();
return html;
}
public static void main(String[] args) {
String html = "no html";
try {
LogTest test = new LogTest();
String url = "http://www.cupertino.schoolloop.com/portal/login?login_name=siddhantdanger&password=11616sid"
+ "&event_override=login";
Map<String, String> data = new HashMap<String, String>();
data.put("login_name", "aLogin");
data.put("password", "aPass");
data.put("event_override", "login");
data.put("etarget", "login_form");
html = test.doSubmit(url, data);
} catch (Exception e) {
e.printStackTrace();
}
System.out.println(html);
}
}
Я понятия не имею, почему Android должен отличаться от простого компиляции Java. Что касается того, как я использую его в Android (если это влияет на него), у меня просто есть основное действие с макетом, а затем я вызываю метод doSubmit из этого основного действия, чтобы получить HTML (а затем установить его в TextView или распечатать в тосте). В папке src моего пакета приложений есть только два класса: LogTest.java (без основного метода) и MainActivity.java. Вместо этого основной метод был перемещен в действие OnCreate () файла MainActivity.java.