java - 为什么我的 Java 项目无法成功执行 POST 方法来连接我的 OrientDB?

标签 java rest http orientdb

我有一个数据库,需要做一个真实的帖子。我做了一个很好的 GET 并且 POST 失败了(我不知道在哪里)并且编译没有问题。

POST 方法失败:

URL url = new URL(urlPost);
HttpURLConnection conexionPost = (HttpURLConnection) url.openConnection();

conexionPost.setDoOutput(true);
conexionPost.setRequestMethod("POST");
conexionPost.setRequestProperty("Accept-Encoding", "gzip,deflate");
conexionPost.setRequestProperty("Content-Length", "216");
conexionPost.connect();
conexionPost.disconnect();

GET 方法没问题:

  String sGet = "xxxxx:2480/query/mydb/sql/...";
    URL urlGet = new URL(sGet);
    HttpURLConnection conexionGet = (HttpURLConnection) urlGet.openConnection();
    conexionGet.setDoInput(true);
conexionGet.setRequestMethod("GET");

    BufferedReader in1 = new BufferedReader(new InputStreamReader(conexionGet.getInputStream()));
    String texto = "";
    String request = "";
    while ((texto = in1.readLine()) != null) {
        request += texto;
    }
    in1.close();
    System.out.println(request);

我创建顶点的 SQL 代码是这样的:

String urlPost = urlServer + "/command/mydb/sql/CREATE%20VERTEX%20V%20"
+ "SET%20certificateFingerprint%20=%20%27" + datos[9]+ "%27";

DB 的答案是:{"result":[]} 而我的 DB 是空的(显然)。

提前致谢。

最佳答案

您的 POST 请求中缺少身份验证。

我试过这段代码,效果很好:



    import java.io.IOException;
    import java.net.HttpURLConnection;
    import java.net.URL;

    import org.apache.commons.codec.binary.Base64;


    public class Stack38089384 {

        public static void main(String[] args) throws IOException {
            String urlPost = "http://localhost:2480/command/Stack38089384/sql/create%20class%20Test%20extends%20v";
            URL url = new URL(urlPost);
            HttpURLConnection conexionPost = (HttpURLConnection)url.openConnection();

            String userCredentials = "root:root";
            String basicAuth = "Basic " + new String(new Base64().encode(userCredentials.getBytes()));
            conexionPost.setRequestProperty ("Authorization", basicAuth);
            conexionPost.setRequestMethod("POST");
            conexionPost.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
            conexionPost.setRequestProperty("Content-Language", "en-US");
            conexionPost.setUseCaches(false);
            conexionPost.setDoInput(true);
            conexionPost.setDoOutput(true);

            System.out.println(conexionPost.getResponseCode());
        }


    }

希望对您有所帮助。

关于java - 为什么我的 Java 项目无法成功执行 POST 方法来连接我的 OrientDB?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38089384/

相关文章:

java - 通过java连接sql

ruby-on-rails-3 - Rails 3 中 "like"的正确 RESTful 方式是什么?

php - laravel 中的 Jwt-Auth 可以处理多服务器配置中的无效 token 吗?

unit-testing - 用于测试目的的假 http 服务器

c# - StreamReader 缓冲带有 GZIP 的流式 HTTP?

Java显式构造函数调用和实例初始化器

java - 如何更改 TOMCAT 使用的 Java 版本?

apache - curl 不允许使用 HTTP PUT 方法(无 PHP 或 CGI)

java - 比较两个字符串的有效方法(字符顺序无关紧要)

java - OpenXava 框架支持 Web 服务吗?