从Java客户端调用Rest API时出现问题

时间:2018-10-19 18:32:11

标签: java json rest jackson

我正在尝试从客户端Java程序中调用一些Rest API(采用JSON字符串),但是我要么得到Error 500: javax.servlet.ServletException: java.lang.NoSuchMethodError: com/fasterxml/jackson/databind/ObjectReader.forType(Lcom/fasterxml/jackson/databind/JavaType&#59;)Lcom/fasterxml/jackson/databind/ObjectReader&#59;

Error 500: javax.servlet.ServletException: java.lang.Exception: See nested Throwable

我能够从Postman正确调用Rest API,但是Java程序不起作用: Client.java

    URL url = new URL(_strUri + "/query/properties");

    SendRequest client = new SendRequest(url);

    QueryRequest request = new QueryRequest();

    if (_auth != null)
    {
       // do steps to setup a user in the request
    }

    QueryParameters queryParms = new QueryParameters();
    queryParms.setSelectQuery(queryStatement);

    request.setQueryParameters(queryParms);

    ParentQueryRequest pqr = new ParentQueryRequest();
    pqr.setJsonIn(request);
    ByteArrayOutputStream bytesOut = new ByteArrayOutputStream();

    JSONUtil.toJSON(pqr, bytesOut);
    String jsonString = new String(bytesOut.toByteArray(), "UTF-8");
    byte[] response = client.send(jsonString);
    httpCode = client.getLastStatus();
    String strResponse = new String(response, "UTF-8");

SendRequest.java

 public byte[] send(String jsonIn) throws ResponseException,IOException {
    HttpURLConnection httpConnection = (HttpURLConnection) _url.openConnection();
    httpConnection.setDoOutput(true);
    //httpConnection.setRequestMethod("POST");
    httpConnection.setRequestProperty("Content-Type", "application/json");

    OutputStreamWriter wr = new OutputStreamWriter(httpConnection.getOutputStream());
    wr.write(jsonIn);
    wr.flush();

     InputStream is = httpConnection.getInputStream();

    ByteArrayOutputStream out = new ByteArrayOutputStream();
    BufferedInputStream buffIn = new BufferedInputStream(is);
    BufferedOutputStream buffOut = new BufferedOutputStream(out);
    while (true) {
        int iByte = buffIn.read();
        if (iByte == -1) {
            break;
        }
        buffOut.write(iByte);
    }

    wr.close();
    buffOut.close();
    out.close();
    is.close();

    return out.toByteArray();
}`

需要传递的JSON字符串为-jsonIn:{"queryParameters":{"serverDef":"nRepo","selectQuery":"select * from BayStreet"}}

感谢任何帮助或指导。

0 个答案:

没有答案