0

當我跑我的RESTful客戶端在Eclipse中,得到以下錯誤:如何通過SSL實現RESTful服務?

java.net.ConnectException: Connection refused: connect 
    at java.net.PlainSocketImpl.socketConnect(Native Method) 
    at java.net.PlainSocketImpl.doConnect(Unknown Source) 
    at java.net.PlainSocketImpl.connectToAddress(Unknown Source) 
    at java.net.PlainSocketImpl.connect(Unknown Source) 
    at java.net.SocksSocketImpl.connect(Unknown Source) 
    at java.net.Socket.connect(Unknown Source) 
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.connect(Unknown Source) 
    at com.sun.net.ssl.internal.ssl.BaseSSLSocketImpl.connect(Unknown Source) 
    at sun.net.NetworkClient.doConnect(Unknown Source) 
    at sun.net.www.http.HttpClient.openServer(Unknown Source) 
    at sun.net.www.http.HttpClient.openServer(Unknown Source) 
    at sun.net.www.protocol.https.HttpsClient.<init>(Unknown Source) 
    at sun.net.www.protocol.https.HttpsClient.New(Unknown Source) 
    at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(Unknown Source) 
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source) 
    at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(Unknown Source) 
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(Unknown Source) 
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(Unknown Source) 
    at com.elkay.client.RestClient.main(RestClient.java:23) 

當瀏覽器調用,該URL不會被阻斷。我如何通過客戶端使用它?

TIA!

編輯:(客戶端代碼)

public class RestClient { 

    public static void main(String[] args) { 

      try { 

      URL url = new URL("https://www.xyz.com"); 


      HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
      conn.setDoOutput(true); 
      DataOutputStream printout = new DataOutputStream(conn.getOutputStream()); 
      String authString=URLEncoder.encode("username=anushree&password=anushree","UTF-8"); 
      printout.writeBytes (authString); 
      printout.flush(); 
      printout.close(); 

      conn.setRequestMethod("GET"); 
      conn.setRequestProperty("Accept", "application/json"); 

      if (conn.getResponseCode() != 200) { 
       throw new RuntimeException("Failed : HTTP error code : " 
         + conn.getResponseCode()); 
      } 

      BufferedReader br = new BufferedReader(new InputStreamReader(
       (conn.getInputStream()))); 

      String output; 
      System.out.println("Output from Server .... \n"); 
      while ((output = br.readLine()) != null) { 
       System.out.println(output); 
      } 

      conn.disconnect(); 

      } catch (MalformedURLException e) { 

      e.printStackTrace(); 

      } catch (IOException e) { 

      e.printStackTrace(); 

      } 

     } 


} 
+1

粘貼代碼段 – Satish

+0

已編輯。請檢查。我不使用球衣或CFX。只是這個簡單的客戶。 –

+0

你爲什麼使用HttpUrlConnection。你應該使用HttpsUrlConnection。您的信任商店還添加了證書嗎? – Satish

回答

0

也可以嘗試這樣的。 //在標題中設置基本身份驗證

String userPassword = "password"; 
String encoding = new sun.misc.BASE64Encoder().encode(userPassword.getBytes()); 
conn.setRequestProperty("Authorization", "Basic " + encoding); 
String parameters = "username=" + URLEncoder.encode("user1", "UTF-8") + "&password=" + URLEncoder.encode("user1password", "UTF-8"); 
printout.writeBytes (parameters); 
相關問題