等待重定向,阅读表单然后发布

时间:2015-11-11 10:52:49

标签: java android redirect https request

我做了一个应用程序,基本上只是发布一个表单登录然后使用API​​获取数据。现在网站改变了它的工作方式,这样当您加载登录页面时,它会将您重定向到查询字符串中的随机字符串和表单操作中的不同随机字符串。

由于我不能再向提交页面发出HTTPS POST请求,我需要一种方法来加载登录页面,等待重定向,然后再等待加载,然后使用表单操作作为HTTPS POST URL。

如何加载页面,特别是等待它重定向然后加载?

我现在正在使用的是:

        HttpsURLConnection urlConnection = (HttpsURLConnection) url.openConnection();
        urlConnection.setRequestMethod("POST");
        urlConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
        urlConnection.setRequestProperty("User-Agent", USER_AGENT);
        urlConnection.setConnectTimeout(5000);

        String urlParameters = "ctl00$ContentPlaceHolder1$UsernameTextBox="+ URLEncoder.encode(inumber, "UTF-8") + "&ctl00$ContentPlaceHolder1$PasswordTextBox="+ URLEncoder.encode(password, "UTF-8");

        urlConnection.setRequestProperty("Content-Length", "" +
                Integer.toString(urlParameters.getBytes().length));

        urlConnection.setUseCaches(false);
        urlConnection.setDoInput(true);
        urlConnection.setDoOutput(true);
        urlConnection.setChunkedStreamingMode(0);

        DataOutputStream out = new DataOutputStream(urlConnection.getOutputStream());
        out.writeBytes(urlParameters);
        out.flush();
        out.close();

1 个答案:

答案 0 :(得分:0)

您有几个选择:

  1. 使用HTTPURLConnection#setInstanceFollowRedirects(boolean)并确保您使用与重定向相同的协议请求初始页面(否则不会遵循其他方式)
  2. 使用支持任意重定向的[Google HTTP Client]