在Java中切换到POST方法不起作用

时间:2019-01-28 18:32:19

标签: java android

我不明白如何在HttpsURLConnection中切换到POST方法。在调试器上,在setRequestMethod方法之后,请求方法也是GET。你能告诉我我的错误在哪里吗?

try {
                URL url=new URL("https://smartmates.herokuapp.com");
                HttpsURLConnection connection= (HttpsURLConnection) url.openConnection();
                connection.setRequestMethod("POST");
                connection.setDoInput(true);
                connection.setDoOutput(true);
                //I'll add some params here
                connection.disconnect();

            } catch (MalformedURLException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }

非常感谢您。

1 个答案:

答案 0 :(得分:1)

这是我用来发布String mensaje并接收rta.ToString()的一段代码。我认为DoSetInput(true)是一个错误,因为您要发送POST(输出)并最终获得响应。

 `
    String urlParametros = "<?xml version=\"1.0\"?>";
    urlParametros = urlParametros + mensaje;
    byte[] postDatos = urlParametros.getBytes(StandardCharsets.UTF_8);
    try {
        URL miurl = new URL(url);
        con = (HttpURLConnection) miurl.openConnection();
        con.setDoOutput(true);
        con.setRequestMethod("POST");
        //******…………..
        con.setRequestProperty("User-Agent", "Java client");
        con.setRequestProperty("Content-Type", "text/xml");
        try (DataOutputStream datos = new DataOutputStream(con.getOutputStream())) {
            datos.write(postDatos);
        }
        StringBuilder rta;
        try (BufferedReader entrada = new BufferedReader(
                new InputStreamReader(con.getInputStream()))) {
            String linea;
            rta = new StringBuilder();
            while ((linea = entrada.readLine()) != null) {
                rta.append(linea);
                rta.append(System.lineSeparator());
            }
        }
        return rta.toString();
    } finally {
        con.disconnect();
    }´

希望有帮助

丹尼尔