簡體   English   中英

com.sun.jersey.api.client.ClientHandlerException:java.net.SocketException:連接重置

[英]com.sun.jersey.api.client.ClientHandlerException: java.net.SocketException: Connection reset

我正在嘗試從代碼進行PUT請求調用。 我已經使用了如下的WebResource Class對象:

final Client client = Client.create();
final WebResource webResource = client.resource(API_URL);
client.setConnectTimeout(Integer.valueOf(connectionTimeout));
client.setReadTimeout(Integer.valueOf(readTimeout));
client.addFilter(new HTTPBasicAuthFilter(apiUsername, apiPassword));
webResource.type(MediaType.APPLICATION_JSON);
webResource.accept(MediaType.APPLICATION_JSON);
webResource.header("Content-Length", 
String.valueOf(jsonInString.getBytes(Charset.forName("UTF-8")).length));
final ClientResponse response = webResource.put(ClientResponse.class, 
jsonInString);

這里所有的變量connectionTimeout,readTimeout,apiUsername,apiPassword,API_URL都具有正確的值。

從最后一行開始,它探討SocketException為com.sun.jersey.api.client.ClientHandlerException:java.net.SocketException:連接重置Exception被捕獲在ClientHandlerException catch塊中。

但是,當我嘗試使用Postman Rest Client的其他輸入來訪問API_URL時,我會收到成功的響應。

誰能幫我理解為什么它不能通過代碼工作?

使用JRE 7作為運行時環境。 並按如下所示創建您的客戶並使用。 它將解決您的問題。

package com.myoffice.util;

import java.security.SecureRandom;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.config.DefaultClientConfig;

public class ClientHelper {

    enter code here

    private static Client client = null;

    static{
        SSLContext ctx = null;
        try {
            //Protocol used is TLSv1.2. You may need other ..check target URL required Protocol
            ctx = SSLContext.getInstance("TLSv1.2"));
            ctx.init(null, null, new SecureRandom());
            HttpsURLConnection.setDefaultSSLSocketFactory(ctx.getSocketFactory());
            client= Client.create(new DefaultClientConfig());
        } catch (Exception e) {
            logger.error("Exception while creating SSLContext", e);
        }
    }

    public static Client getClient(){
        return client;
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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