0

我正在使用 restheart 为 mongodb 提供一个宁静的界面。Get 方法运行良好,我正在响应中从数据库中获取数据。但在这种情况下,我正在尝试实现 POST 请求以将数据写入基础。我正在运行以下代码,但收到代码 415 不受支持的媒体类型的响应。我的测试库 db1 有一个集合 testcoll,我试图在其中编写包含“名称”和“评级”字段的文档

 public class PostMethodJava {
 public static void main(String[] args) throws IOException {
    URL url;
    try {
        url = new URL("http://127.0.0.1:8080/db1/testcoll/");
        //url = new URL("http://google.com/");
    } catch (Exception et) {
        System.out.println("Data URL is broken");
        return;
    }

    HttpURLConnection hc = null;

    try {
        hc = (HttpURLConnection) url.openConnection();

        String login = "admin:12345678";
        final byte[] authBytes = login.getBytes(StandardCharsets.UTF_8);

        final String encoded = Base64.getEncoder().encodeToString(authBytes);
        hc.addRequestProperty("Authorization", "Basic " + encoded);

        System.out.println("Authorization: " + hc.getRequestProperty("Authorization"));

        //hc.setDoInput(true);
        hc.setDoOutput(true); //<== removed, otherwise 415 unsupported media type
        hc.setUseCaches(false);

        hc.setRequestMethod("POST");
        //hc.setRequestProperty("Accept-Encoding", "gzip, deflate, sdch");
        hc.setRequestProperty("Accept", "application/json");
    } catch (Exception et) {
        System.out.println("Can't prepare http URL con");
    }

    System.out.println(hc.toString());

    String parameter = "mame=test1&rating=temp";
    int plength = parameter.length();
    byte[] pdata = parameter.getBytes(StandardCharsets.UTF_8);
    try (DataOutputStream out = new DataOutputStream(hc.getOutputStream())){
        out.write(pdata);
    }

    int rc = hc.getResponseCode();

    System.out.println("response code: " + rc);
    System.out.println("response message: " + hc.getResponseMessage());

    }
}

出了什么问题,我该如何解决?

4

1 回答 1

1

添加一行:

hc.setRequestProperty("Content-Type","application/json");

并编写字符串:

String parameter = "{\"name\":\"doubleabc\",\"rating\":\"allright\"}";

解决了我的问题。

于 2018-03-08T11:57:26.057 回答