Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java中异步进行POST REST调用_Java - Fatal编程技术网

如何在Java中异步进行POST REST调用

如何在Java中异步进行POST REST调用,java,Java,我已经尝试过使用Java中的HttpConnection异步调用一组库来实现RESTPOST。我尝试过许多开源库,但似乎没有一个能满足我的目的。在核心Java中有什么方法可以做到这一点吗 在不了解您的要求或期望的情况下: 下面是一个没有正确错误处理的简单示例,它展示了如何使用Java8完成异步HTTP调用 public static void main(String ... args) throws InterruptedException, ExecutionException, Timeou

我已经尝试过使用Java中的
HttpConnection
异步调用一组库来实现
RESTPOST
。我尝试过许多开源库,但似乎没有一个能满足我的目的。在核心Java中有什么方法可以做到这一点吗

在不了解您的要求或期望的情况下:

下面是一个没有正确错误处理的简单示例,它展示了如何使用Java8完成异步HTTP调用

public static void main(String ... args) throws InterruptedException, ExecutionException, TimeoutException {
    Future<Object> futureResult = getObjectAsync();

    Object value = futureResult.get(500, TimeUnit.MILLISECONDS);
}

public static Future<Object> getObjectAsync() {
    return CompletableFuture.supplyAsync(() -> doHttpCall());
}

static Object doHttpCall() {
    try {
        HttpURLConnection urlConnection = 
            (HttpURLConnection) new URL("http://example.net/something").openConnection();
            urlConnection.setRequestMethod("POST");
        try (OutputStreamWriter out = new OutputStreamWriter(urlConnection.getOutputStream())) {
            out.write("params as json");
        }

        try (InputStreamReader in = new InputStreamReader(urlConnection.getInputStream())) {
            // convert to Object
            return new Object();
        }

    } catch (IOException e ) {
        throw new RuntimeException(e);
    }
}
publicstaticvoidmain(String…args)抛出interruptedeexception、ExecutionException、TimeoutException{
Future futureResult=getObjectAsync();
对象值=futureResult.get(500,时间单位为毫秒);
}
公共静态未来getObjectAsync(){
返回CompletableFuture.supplyAsync(()->doHttpCall());
}
静态对象doHttpCall(){
试一试{
HttpURLConnection urlConnection=
(HttpURLConnection)新URL(“http://example.net/something”).openConnection();
urlConnection.setRequestMethod(“POST”);
try(OutputStreamWriter out=新的OutputStreamWriter(urlConnection.getOutputStream())){
out.write(“参数作为json”);
}
try(InputStreamReader in=newinputstreamreader(urlConnection.getInputStream())){
//转换为对象
返回新对象();
}
}捕获(IOE异常){
抛出新的运行时异常(e);
}
}

只需使用Jersey framework:您也可以使用netty或apache http组件async Client您的期望是什么?为什么您尝试过的库没有达到您的期望?您的要求是什么?@nimchinpsky这是如何异步的?