![](/img/trans.png)
[英]How to post raw json text in Jersey Client HTTP POST request?
[英]Jersey Http Client replying with 411 on POST request
我正在使用Jersey HTTP Client發送POST請求並收到411 Content Length缺少響應。 但是,並非在所有情況下都會引發此錯誤。 我在使用json內容類型的地方有一些電話,它工作正常。
對於將請求發送到特定URL的特定請求,我收到411內容長度要求。 當我使用不同的URL時具有相同的有效負載時,它工作正常。
這就是我在Jersey客戶請求中設置表單實體的方式
public static MultivaluedMap<String, String> getMultivaluedMapRequest(Map<String, String> map) {
MultivaluedMap<String, String> bodyParams = new MultivaluedHashMap<String, String>();
if (null != map && map.size() > 0) {
for (Entry<String, String> param : map.entrySet()) {
bodyParams.add(param.getKey(), param.getValue());
}
}
return bodyParams;
}
private static Entity<?> getRequestEntity(final HttpRequestPayload<?> payload) {
if (payload.getEntity() instanceof MultivaluedMap<?, ?>) {
return Entity.form((MultivaluedMap<String, String>) payload.getEntity());
} else {
return Entity.entity(payload.getEntity(), payload.getMediaTypeProduced());
}
}
這是撥打電話的方式
final Entity<?> entity = getRequestEntity(payload);
Response response = target.request(payload.getMediaTypeConsumed()).headers(payload.getHeaders()).post(entity);
我不確定是什么問題。 我認為這與我向其發送請求的URL有關。
HttpClientConnectionManager的ClientProperties.REQUEST_ENTITY_PROCESSING默認設置為CHUNKED。 作為解決方案,我將其設置為BUFFERED並成功了。
ClientConfig配置= new ClientConfig(); configuration.property(ClientProperties.REQUEST_ENTITY_PROCESSING,RequestEntityProcessing.BUFFERED);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.