通过Java的AsyncHttpClient / curl命令执行未正确给出结果

时间:2019-04-23 19:38:59

标签: curl java-8 asynchttpclient

我有一个如下的curl命令(示例一)

curl -v https://my-ip/sample/v1/map/1?name=sat&id=123&code=AE123, ER345

当我直接执行上述curl命令时,它会给出完整的响应(包含2页以上),但是当我使用AsyncHttpClient在Java中执行上述curl时,它仅给出2行响应。示例代码

    private static void executeHttps(String map, String codes) throws ExecutionException, InterruptedException, IOException {
    AsyncHttpClient asyncHttpClient = new AsyncHttpClient();
    String url = "https://my-ip/sample/v1/map/"+channelMap;
    AsyncHttpClient.BoundRequestBuilder r = asyncHttpClient.prepareGet(url);
    r.addQueryParam("name", "sat");
    r.addQueryParam("id", "123");
    r.addQueryParam("codes", codes);
    logger.info("URL: "+r);
    Future<Response> f = r.execute();

    Response res = f.get();

    logger.info(res.getStatusCode() + ": " + res.getStatusText());
    logger.info(res.getResponseBody());
}

我还尝试实现将代码直接作为curl命令在Java中执行的代码,即

String curlString = "curl -v https://my-ip/sample/v1/map/1?name=sat&id=123&code=AE123, ER345";
Process process = Runtime.getRuntime().exec(curlString);
InputStream is = process.getInputStream();
String s = jsonString = IOUtils.toString(is, StandardCharsets.UTF_8);
JSONObject json = new JSONObject(s);

当我打印json值时,它给出的响应与AsyncHttpClient相同。在两种情况下均无法获得实际响应。这里的另一点是,当我在codes命令中更改curl的值时,我将获得不同的响应(对于某些代码,在直接卷曲和程序中,我将获得相同的响应,但是对于在直接卷曲中的代码将获得不同的响应。和程序卷曲)。

我也尝试使用HttpUrlConnectionHttpsUrlConnection,但仍然遇到相同的问题

0 个答案:

没有答案