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

Jersey客户端发布InputStream“400错误请求”

叶煌
2023-03-14

在我的代码中,我试图反复构建一个客户端,并向远程endpoint发送一个输入流:

for (int i=0; i<=100; i ++) {                       
    Client client = Client.create();

    WebResource webResource = client.resource("https://endpoint/EndOfDayRapport/eof_" + System.currentTimeMillis());

    SPMResponse response5 = webResource
        .type("text/xml").put(SPMResponse.class,myInputStream);         
    System.out.println(response5);
    try {
        Thread.sleep(1000);
    } catch (InterruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

输入流包含消息的xml正文。我注意到在第一次迭代中。。。请求成功第二次迭代响应为400错误请求。。。第三个400错误请求。。。。等等。。。

如果我将输入流更改为字符串...获取真实的xml并用PUT方法发送它。

有什么区别?为什么它可以处理字符串而不能处理输入流?(似乎inputstream在第一次迭代后会发生变化)性能方面,使用inputstream或字符串更好吗?

共有1个答案

缪征
2023-03-14

请检查您的输入流。在我看来,您似乎有以下问题:在第一个请求中,您的inputstream处于有效状态,在以下请求中,您的数据流已经结束。所以没有什么可读的,你发送的是空数据,而jersey将其处理为“坏请求”

所以试着使用一个inputstream,你可以在每次循环迭代中倒带它。

但这可能会挫败使用流的全部意义。

 类似资料:
  • 我读了很多关于正确的超文本传输协议状态代码返回客户端请求错误的帖子和文章。其他人建议使用400,因为它在RFC 7231中被重新定义了,尽管我不确定给出的例子是否涵盖了我脑海中所有的客户端错误,因为这些例子是语法性的。 400(错误请求)状态代码表示服务器无法或将不会处理请求,原因是被认为是客户端错误(例如,格式错误的请求语法、无效的请求 消息帧或欺骗性请求路由)。 我确实在rfc 7231的附录

  • 我试图自动化Web服务,并以字符串的形式传递XML,然后将其转换为字符串实体并设置实体。但我不知道为什么会抛出400错误。我是WebServices Automation的新手,请在这方面帮助我。 以下是我的代码:

  • 实现这一点的最佳方式是什么: 我的应用程序允许用户上传图像,这是通过RESTful服务完成的,编码为“多部分/表单数据”。 现在,在服务的主体中,我真的不需要保存这个文件,但是我想用它来传递和调用另一个服务。所以我可以使用泽西客户端应用编程接口进行另一次调用,而不一定需要将文件保存到磁盘,然后传递所谓的“临时”文件。 以下是我的一些代码: 我猜上述方法的替代方法是暂时保存文件,然后传入一个java

  • 我试图建立一个连接器从谷歌云下载文件。为此,我使用云存储API客户端库Java(v1beta2-rev23-1.17.0-rc) 我正在使用oAuth2.0,并遵循云控制台帮助中提到的步骤。 验证我可以通过gsutil和api浏览器访问我的桶。 从示例下载了代码,添加了我的client_secrets.json并添加了一行来列出我的桶内容。 我犯了一个错误 400错误请求:“错误”:“未经授权的\

  • YouTube官方网站经常出错。如果我尝试,它在匿名模式下工作。这说明问题是由浏览器上的cookie/cache/localstorage/application数据引起的。 如果我删除数据,它将再次开始工作,但是,我将需要在我使用的所有gmail帐户中再次登录。 我已经要求谷歌(在反馈和推特上)对此进行调查,但他们无能为力。 因此,问题是: 如果有人遇到过这个问题,您是否已经了解了为什么以及如何

  • 我真的不知道我的java代码中的错误在哪里。我必须使用REST API登录Kofax Total Agility。为此,我尝试使用postman测试我的json是否正确构建。以下是我的登录JSON: 我得到了肯定的回答: 到目前为止,一切顺利。为此,我创建了模型: 对于响应: 这些类应该允许我构建 json。现在,我创建了一个方法,用于生成请求对象并期望响应对象。 当我调用这部分代码时,我注意到我