2017-08-04 3 views
0

コードからPUT要求コールを実行しようとしています。私は以下のようなオブジェクトリソースクラスを使用している:ここcom.sun.jersey.api.client.ClientHandlerException:java.net.SocketException:接続リセット

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は適切な値を持っているすべての変数。非常に最後の行から

は com.sun.jersey.api.client.ClientHandlerExceptionとしてのSocketExceptionをtrowingさ:java.net.SocketExceptionが:接続が 例外がClientHandlerExceptionのcatchブロック内キャッチさをリセットします。

しかし、Postman Rest Clientからの他の入力でAPI_URLを打つとき、私は成功応答を得ています。

誰も私がコードからうまくいかない理由を理解できたら助けてくれますか?

+0

解決方法はありましたか?私はあなたが尋ねて以来、長い間それを感じています。実際に私は同じ問題に直面しています。 – prnjn

答えて

0

実行時環境として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; 
    } 
} 
関連する問題