我們正在向我們無法控制的 REST API 發送一個位元組陣列。REST API 要求位元組陣列作為正文發送。
代碼如下:
String path = "/dokumente/angebote/{angebotsId}/unterlagen/{dokumentId}";
WebTarget target = createWebTarget().path(path).resolveTemplate("angebotsId", angebotsId).resolveTemplate("dokumentId", documentType);
try (ResponseHandler handler = new ResponseHandler(
target.request(document.getMimeType()).header("Content-Type", document.getMimeType())
.post(Entity.entity(MY_BYTE_ARRAY))) {
Response response = handler.getResponse();
...
}
到目前為止效果很好,我們一直在使用 JBoss 和 RestEasy。我們現在已經將我們的應用程式遷移到 OpenLiberty,這意味著 Apache CXF 將用作 JAX-RS 實作。
自從遷移以來,實施不再起作用。我們發現如果我們使用這樣的包裝類:
MyWrapper myByteArrayWrapper = new MyWrapper();
myByteArrayWrapper.setData(MY_BYTE_ARRAY));
.post(Entity.entity(myByteArrayWrapper))
那么 Apache CXF 將成功傳輸位元組陣列,但這不符合我們正在呼叫的服務的 API 定義。
有人成功使用 Apache CXF 上傳 byte[] 嗎?
uj5u.com熱心網友回復:
問題在于OLP(與JBoss 不同)使用了分塊傳輸。我們呼叫的服務器不支持。現在在另一臺服務器上啟用了分塊傳輸,現在一切正常。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/528843.html
標籤:爪哇数组休息CXF
