当前位置: 首页 > 知识库问答 >
问题:

HttpOk:调用client.new调用(请求)。执行()故意存在程序

端木元青
2023-03-14

我使用HttpOK库与Java。我写了以下代码:

import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;

...

public class RunFeed implements Runnable {

 private final OkHttpClient client = new OkHttpClient();

 ...

 private Response executeRequest(Request request){

    try {
        final Call call = client.newCall(request);
        Response response = call.execute();
        if (!response.isSuccessful()) {
            throw new IOException("Unexpected code " + response);
        }
        return response;
    } catch (IOException e) {
        e.printStackTrace();
    }
    return null;
 }
}

我编写这种脏代码的原因是试图捕获抛出在call.execute();行的异常

发生的是,当程序达到这一行,程序退出(以某种方式成功),没有达到返回响应语句,或没有任何异常抛出,没有进入捕捉块或达到最后,是的我知道-"肮脏"返回空语句...

客户端和请求对象不是null,在我看来是有效的。

另一点是,我是在一个可运行的实现类中运行代码的。

顺便说一下,当调试器到达call.execute();行,我计算我得到的表达式

响应{协议=超文本传输协议/1.1,代码=200,消息=OK, url=超文本传输协议://myurl}

所以,似乎一切都好。但是就在那之后,当我按下“跳过”按钮时,它只是完成了执行,而不是前进到如果(!response.is成功())...

请告知。

共有1个答案

华和悦
2023-03-14

您可以在另一个线程而不是主线程上运行executeRequest()方法,并调用。execute()在主线程上运行。因此,在调试调用时。execute()有足够的时间准备响应,但当应用程序正在运行时,它没有这样的机会,executeRequest()继续在另一个线程上执行。

我建议考虑使用call.enqueue()而不是call.execute()

 类似资料:
  • 我们正在开发一个plone界面来使用来自Web应用程序的REST API服务。用户登录plone并能够访问REST API 问题1)我需要参考哪些Plone编程文档进行设计 查询:2)我需要参考学习的不同技术有哪些 请参阅随附的建议解决方案框图。 .

  • 我有一个简单的facelets页面: Foobar bean如下所示: -将有效的输入值推送到模型(如果组件连接到bean属性)。 -执行操作和操作侦听器(如果组件是操作)。 所以在这里,应该执行myCommandButton,不是吗?而组件的执行意味着要执行它的操作?

  • 要使用请求调度器,servlet 可调用 RequestDispatcher 接口的include 或 forward 方法。这些方法的参数既可以是javax.servlet.Servlet 接口的 service 方法传来的请求和响应对象实例,也可以是本规范的2.3版本中介绍的请求和响应包装器类的子类对象实例。对于后者,包装器实例必须包装容器传递到 service 方法中的请求和响应对象。 容器

  • 问题内容: 我有以下指令: 这是我如何调用它: 首次初始化指令时,则为空。稍后,通过ajax对其进行检索,并填充其值。 问题是,我怎么看待更新的价值?当我从链接方法执行此操作时: 初始化指令时,仅调用一次,然后该值为空。通过ajax(来自)检索值时,不会再次调用此watch函数。但是,在我要显示的页面的其他部分,该值在获取ajax请求时会更新。因此,我认为问题与在ajax请求之后执行无关。 编辑:

  • 问题内容: 我想将日志记录添加到Servlet中,因此我创建了Filter,该过滤器应显示请求并转到Servlet。但不幸的是,我遇到了例外: 因此,要解决此问题,我发现了Wrapper的解决方案,但它不起作用。我还能在代码中使用/更改什么?有任何想法吗? [MyHttpServletRequestWrapper] [MyFilter] 问题答案: 看起来restlet框架已经调用了Request

  • 我目前正在努力从API获取一些数据,但在一些请求中遇到了问题。 当前调用和其他一些类似的调用似乎不起作用,而其他调用则起作用(除了这些调用不使用“payload”参数)。我在文档中使用了相同的示例,因此不确定这些示例为什么不起作用。 回报 有人有主意吗?谢谢。