【发布时间】:2013-10-09 20:45:58
【问题描述】:
当我在 Eclipse 中运行我的 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();
}
}
}
【问题讨论】:
-
已编辑。请检查。我没有使用球衣或 CFX。就是这个简单的客户端。
-
你为什么使用 HttpUrlConnection。您应该使用 HttpsUrlConnection。证书是否也添加到您的信任存储中?
-
已尝试使用 HttpsUrlConnection。另外,您能否简要介绍一下如何创建受信任的存储,即 .jks 文件?因为我可以直接在浏览器中调用 URL,所以它不会因为使用 HTTPS 而被阻止。注意:xyz.com 不是确切的 URL,但同样如此。
-
已将代码放入下一个答案。您可以从 IE 的 .cer 的 Mozilla 浏览器生成 .crt
-
另外你在这两行中尝试什么?String authString=URLEncoder.encode("username=anushree&password=anushree","UTF-8"); printout.writeBytes(authString);
标签: ssl ssl-certificate restful-authentication restful-architecture