Android: затмение / конфликт NetBeans HTML - PullRequest
0 голосов
/ 26 января 2012

Я использую следующий код в 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.

...