Jersey Http 客户端在 POST 请求上回复 411
Jersey Http Client replying with 411 on POST request
我正在使用 Jersey HTTP 客户端发送 POST 请求并接收响应中缺少 411 内容长度。
但是,并非在所有情况下都会抛出此错误。在某些调用中,我使用了 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);
我正在使用 Jersey HTTP 客户端发送 POST 请求并接收响应中缺少 411 内容长度。 但是,并非在所有情况下都会抛出此错误。在某些调用中,我使用了 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);