我有一个如下的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
的值时,我将获得不同的响应(对于某些代码,在直接卷曲和程序中,我将获得相同的响应,但是对于在直接卷曲中的代码将获得不同的响应。和程序卷曲)。
我也尝试使用HttpUrlConnection
和HttpsUrlConnection
,但仍然遇到相同的问题