泽西客户端 Post PUT InputStream“400 错误请求”
Jersey Client Post PUT InputStream "400 bad request"
在我的代码中,我尝试迭代 n 次构建客户端并将输入流发送到远程端点:
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 方法发送它。
第一次迭代...请求成功
第二次迭代...请求成功
第三次迭代...请求成功
等等...
有什么区别?为什么它适用于字符串而不适用于输入流?
(似乎在第一次迭代后输入流发生了某种变化)
性能方面使用输入流或字符串更好吗?
请检查您的输入流。在我看来,你有以下问题:
在第一次请求时,您的输入流处于有效状态且数据可用
在以下请求中,您的流已经结束。所以没有什么可读的,你发送球衣处理的空数据 "bad request"
因此,请尝试使用可以在每次循环迭代中倒带和倒带的输入流。
但也许这种做法违背了使用流的全部意义。
在我的代码中,我尝试迭代 n 次构建客户端并将输入流发送到远程端点:
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 方法发送它。 第一次迭代...请求成功 第二次迭代...请求成功 第三次迭代...请求成功 等等...
有什么区别?为什么它适用于字符串而不适用于输入流? (似乎在第一次迭代后输入流发生了某种变化) 性能方面使用输入流或字符串更好吗?
请检查您的输入流。在我看来,你有以下问题: 在第一次请求时,您的输入流处于有效状态且数据可用 在以下请求中,您的流已经结束。所以没有什么可读的,你发送球衣处理的空数据 "bad request"
因此,请尝试使用可以在每次循环迭代中倒带和倒带的输入流。
但也许这种做法违背了使用流的全部意义。