POST请求被视为GET请求

时间:2015-09-28 08:15:20

标签: java http

为什么以下代码打印“Method:GET”而不是“Method:POST”?

我需要它以编程方式http://www.havenandhearth.com/portal/进行授权。

public class Main {

    public static void main(String[] args) {

        try {
            URL url = new URL("http://www.havenandhearth.com/portal/sec/login");
            HttpURLConnection conn = (HttpURLConnection)url.openConnection();

            String parameters = "username=xxx&password=yyy";

            conn.setRequestMethod("POST");
            conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
            conn.setRequestProperty("Content-Length", String.valueOf(parameters.length()));

            conn.setDoOutput(true);
            DataOutputStream wr = new DataOutputStream(conn.getOutputStream());
            wr.writeBytes(parameters);
            wr.flush();
            wr.close();

            int responsecode = conn.getResponseCode();
            if (responsecode != HttpURLConnection.HTTP_OK) {
                System.out.println("Unable to make POST request. Response code: " + responsecode);
                return;
            }

            System.out.println("Method: " + conn.getRequestMethod());
        } catch (IOException ex) {
            System.out.println("Error: " + ex.getMessage());
        }
    }
}

如果我将网址更改为http://httpbin.org/post,则可以按预期工作。

为了实现这一目标,您需要将xxx和yyy替换为实际的帐户凭据。

提前致谢。

1 个答案:

答案 0 :(得分:0)

好像是因为自动重定向。

如果我设置

conn.setInstanceFollowRedirects(false);

它按预期工作。