当前位置: 首页 > 面试题库 >

无法与不可重复的请求实体重试请求

岳城
2023-03-14
问题内容

我在客户端使用Java-http-client库和Apache Transport,在服务器端使用Rails。有时会出现如下所示的获取错误:

11-24 17:37:02.469: WARN/BaseActivity(5925): org.apache.http.client.ClientProtocolException
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:557)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
    at com.google.api.client.http.apache.ApacheHttpRequest.execute(ApacheHttpRequest.java:58)
    at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:639)
    at com.sk.api.SkClient.updateUser(SkClient.java:157)
    at com.sk.api.SkClient$3.call(SkClient.java:76)
    at com.sk.api.SkClient$3.call(SkClient.java:71)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306)
    at java.util.concurrent.FutureTask.run(FutureTask.java:138)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581)
    at java.lang.Thread.run(Thread.java:1019)
    Caused by: org.apache.http.client.NonRepeatableRequestException: Cannot retry request with a non-repeatable request entity
    at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:413)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
    ... 12 more

我应该怎么做才能避免这种情况?


问题答案:

我有一个类似的错误,因为我使用了CountingInputStreamEntity这是一个不可重复的http客户端。解决方案是使用BufferedHttpEntity,它将不可重复的HTTP客户端转换为可重复的httpclient。

ParcelFileDescriptor fileDescriptor = this.getContentResolver().openFileDescriptor(uri, "r");
            InputStream in = this.getContentResolver().openInputStream(uri);

            CountingInputStreamEntity entity = new CountingInputStreamEntity(in, fileDescriptor.getStatSize());
            entity.setUploadListener(this);
            entity.setContentType("binary/octet-stream");
            entity.setChunked(true);

            BufferedHttpEntity myEntity = null;
            try {
                myEntity = new BufferedHttpEntity(entity);
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

            put.setEntity(myEntity);


 类似资料:
  • 我有一个问题,当我创建实时订阅时,我会收到来自不同Instagram IP地址的重复通知。我设置了它,以便在收到通知时,使用min_tag_id设置发送最新更新请求。我将其存储在我的数据库中,以便在下一个请求中使用它。我并不总是得到重复,但当我这样做时,通知的所有内容都是相同的(time、object、changed_aspect),只是我可以看出它们与我的调试输出不同,它列出了两个几乎相同的请求

  • 这是我第一次编写单元测试,尽管我尽了最大的努力,但还是不可避免地给您带来了麻烦。我试图模拟,但是我的测试函数没有达到预期的效果,它诱导了一个状态代码,以便测试错误处理。 MyModule.Py

  • 我想在我的React应用程序上发出如下获取请求,无论是否使用Axios。但我不知道如何为此添加身份验证令牌。 你能帮帮我吗?

  • 有人可以帮助我将我的ruby代码转换为Go吗?请参考下面的红宝石代码。 外带。

  • 我读过关于跨源请求的文章。考虑到此资源链接:

  • 我需要将每个请求的不同系统属性设置为REST API。可以使用