Java中Http请求的Javascript获取API等价物?

Java中Http请求的Javascript获取API等价物?,javascript,java,multithreading,apache-httpclient-4.x,Javascript,Java,Multithreading,Apache Httpclient 4.x,我目前正在学习Java中的线程。我想知道在Java中发出Http请求时的标准协议是什么,该请求类似于下面的代码,它使用Javascript获取API和异步编程。例如,如果我使用Javascript中的Fetch API首先发出一个GET请求,从REST端点获取一些数据,稍后我将使用这些数据发出POST请求(如下面的代码所示),我将需要使用回调函数或承诺(如下所示)等待,直到第一个请求检索到第二个请求的数据,然后继续。显然,如果我没有使用Promises或在下面的第一个Fetch方法(GET)中嵌

我目前正在学习Java中的线程。我想知道在Java中发出Http请求时的标准协议是什么,该请求类似于下面的代码,它使用Javascript获取API和异步编程。例如,如果我使用Javascript中的Fetch API首先发出一个GET请求,从REST端点获取一些数据,稍后我将使用这些数据发出POST请求(如下面的代码所示),我将需要使用回调函数或承诺(如下所示)等待,直到第一个请求检索到第二个请求的数据,然后继续。显然,如果我没有使用Promises或在下面的第一个Fetch方法(GET)中嵌套第二个HttpPOST,并编写两个单独的Fetch API调用(一个用于GET,一个用于POST,依次从上到下),这两个调用都会“触发”同时,第二个POST请求将没有成功POST所需的数据

constMyHttpGetAndPostMethod=()=>{
//这里是第一个Http请求
取('http://example.com/movies.json', {
方法:“GET”,
headers://这里有一些headers,
})
.then(response=>response.json())
。然后(数据=>{
控制台日志(数据)
//将第二个Http请求嵌套在此处。它仅在第一个请求完成后运行
返回获取('http://example.com/movies.json', {
方法:“POST”,
headers://这里有一些headers,
body:JSON.stringify(body);
})
.then((response)=>response.json())
。然后((数据)=>{
console.log('Success:',data);
})
.catch((错误)=>{
console.error('error:',error);
});
})
}
那么,如果我在Java中使用类似ApacheHttpClient的库,那么标准过程是“旋转”另一个线程(除了主线程)来执行GET请求,然后执行Thread.join(),这样在第一个线程完成后,那么第二个请求可以触发它自己的线程吗

我是否需要使用可调用的而不是可运行的,以便保存第一个GET请求的HttpEntity数据响应

我想我只是想了解实现我上面提出的场景的最佳方法,该场景涉及一个HTTP GET请求,该请求是发出后续POST请求所必需的,而这两个请求都是异步触发的,这样它们就不会阻塞主线程

您可以使用apache Http库发出基本的GET请求(POST
也非常类似):

CloseableHttpClient-httpclient=HttpClients.createDefault();
HttpGet HttpGet=新的HttpGet(“http://targethost/homepage");
CloseableHttpResponse response1=httpclient.execute(httpGet);
试一试{
System.out.println(response1.getStatusLine());
HttpEntity entity1=response1.getEntity();
//将响应正文保存为字符串
字符串体=EntityUtils.toString(entity1,StandardCharsets.UTF_8);
系统输出打印项次(正文);
EntityUtils.consume(entity1);
}最后{
响应1.close();
}
还是我在这里采取了错误的方法,并且错误地看待这个问题?我相信Apache中的Http库提供了同步和异步Http调用?或者我应该在Java中使用更新的Http库