使用HttpURLConnection的JSON数据制作PUT请求不工作(Making PUT re

2019-08-18 02:17发布

我试图让使用JSON数据PUT请求HttpURLConnection Java编写的。 我这样做是不工作的方式。 我没有得到任何错误,所以我不知道是什么问题。

public static void main(String[] args) {

        URL url;
        try {
            url = new URL("http://fltspc.itu.dk/widget/515318fe17450f312b00153d/");
            HttpURLConnection hurl = (HttpURLConnection) url.openConnection();
            hurl.setRequestMethod("PUT");
            hurl.setDoOutput(true);
            hurl.setRequestProperty("Content-Type", "application/json");
            hurl.setRequestProperty("Accept", "application/json");

            String payload = "{'pos':{'left':45,'top':45}}";

            OutputStreamWriter osw = new OutputStreamWriter(hurl.getOutputStream());
            osw.write(payload);
            osw.flush();
            osw.close();
        } catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

这里是我实际上是想发出请求:

我已经做GET请求到同一应用中的资源和它工作得很好。 我将是我如何能调试或我怎么能尝试做一些其他的方式,所有的技巧非常感谢。 到目前为止,我只试过用OutputStream ,而不是OutputStreamWriter ,但它不工作也没有。

Answer 1:

除非你告诉它要在流模式太阳(Oracle)的实施HttpURLConnection类的缓存您的文章的内容。 如果你开始的反应,如互动内容将被发送:

hurl.getResponseCode();

另外,根据RFC 4627,你不能在你的JSON使用单引号(尽管一些实现似乎并不关心)。

因此,改变你的有效载荷:

String payload = "{\"pos\":{\"left\":45,\"top\":45}}";

这个例子对我的作品

public class HttpPut {
    public static void main(String[] args) throws Exception {
        Random random = new Random();
        URL url = new URL("http://fltspc.itu.dk/widget/515318fe17450f312b00153d/");
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        connection.setRequestMethod("PUT");
        connection.setDoOutput(true);
        connection.setRequestProperty("Content-Type", "application/json");
        connection.setRequestProperty("Accept", "application/json");
        OutputStreamWriter osw = new OutputStreamWriter(connection.getOutputStream());
        osw.write(String.format("{\"pos\":{\"left\":%1$d,\"top\":%2$d}}", random.nextInt(30), random.nextInt(20)));
        osw.flush();
        osw.close();
        System.err.println(connection.getResponseCode());
    }
}


文章来源: Making PUT request with JSON data using HttpURLConnection is not working