簡體   English   中英

Jersey Http客戶端在POST請求上回復411

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM