开发者社区 问答 正文

阿里云OpenAPI 这个是什么问题?

阿里云OpenAPI 这个是什么问题?cdd85a139d69597f9c8d7689656519b1.png
lQLPJxERD25f_aDNA8DNBkCw2v0fVw4f1f0FMTf2aICnAA_1600_960.png

展开
收起
三分钟热度的鱼 2023-11-08 21:05:16 50 分享 版权
1 条回答
写回答
取消 提交回答
  • 从你提供的代码来看,你在尝试异步地调用阿里云的OpenAPI,并同步地获取返回结果。这是Java 8引入的一种新的异步编程模型,它允许你在不阻塞当前线程的情况下执行耗时操作,然后在需要的时候再获取结果。

    你遇到的问题可能是因为你的代码在等待response.get()的结果时,response还没有被完成(completed),也就是说,阿里云的OpenAPI还没有返回结果。

    解决这个问题的一个方法是使用CompletableFuturethenAcceptthenRun方法,这些方法会在CompletableFuture被完成后被执行,而不是立即执行。这样,你就可以在阿里云的OpenAPI返回结果后再进行后续的处理,而不需要等待结果。

    例如:

    CompletableFuture<RecognizeInvoiceResponse> response = client.recognizeInvoice(recognizeInvoiceRequest);
    response.thenAccept(resp -> {
        System.out.println(new Gson().toJson(resp));
    });
    

    在这个例子中,当response被完成后,它会调用thenAccept方法,并将返回结果传递给这个方法的参数(一个Consumer),然后这个Consumer会对返回结果进行处理(打印出来)。这样,即使response没有被完成,你的程序也不会阻塞。

    2023-11-09 15:03:01
    赞同 展开评论