Java Rest API | Linux | HTTPS 443连接被拒绝|代码在本地正常工作,但在服务器上不正常| Ping返回正常
以下URL在postman中运行良好,以及以下代码在my Eclipse中运行良好:Java Rest API | Linux | HTTPS 443连接被拒绝|代码在本地正常工作,但在服务器上不正常| Ping返回正常,java,linux,rest,https,connectionexception,Java,Linux,Rest,Https,Connectionexception,以下URL在postman中运行良好,以及以下代码在my Eclipse中运行良好: String fullUrl = "https://edge.chabdee.com/api/WebMethod?webMethodName=MDMChangeCustomerAccount"; URL url = new URL(fullUrl); HttpURLConnection conn = (HttpURLConnection) ur
String fullUrl = "https://edge.chabdee.com/api/WebMethod?webMethodName=MDMChangeCustomerAccount";
URL url = new URL(fullUrl);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
String auth = "User:guf!YN8";
byte[] encodedAuth = Base64.getEncoder().encode(auth.getBytes(StandardCharsets.UTF_8));
String authHeaderValue = "Basic " + new String(encodedAuth);
conn.setRequestProperty("Authorization", authHeaderValue);
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "application/json");
conn.setDoOutput(true);
conn.setRequestProperty("Content-Length", String.valueOf(input.length()));
OutputStream os = conn.getOutputStream();
os.write(input.getBytes());
os.flush();
if (conn.getResponseCode() != 200) {
throw new RuntimeException("Failed : HTTP error code : " + conn.getResponseCode());
}
BufferedReader br = new BufferedReader(new InputStreamReader((conn.getInputStream())));
StringBuilder sb = new StringBuilder();
String output;
while ((output = br.readLine()) != null) {
sb.append(output);
}
System.out.println(sb.toString());
conn.disconnect();
当我在服务器上部署代码时,它会说:
Exception in thread "main" java.net.ConnectException: Connection refused (Connection refused)
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)
at sun.security.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:668)
at sun.security.ssl.BaseSSLSocketImpl.connect(BaseSSLSocketImpl.java:173)
at sun.net.NetworkClient.doConnect(NetworkClient.java:180)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:432)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:527)
at sun.net.www.protocol.https.HttpsClient.<init>(HttpsClient.java:264)
at sun.net.www.protocol.https.HttpsClient.New(HttpsClient.java:367)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(AbstractDelegateHttpsURLConnection.java:200)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1157)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1032)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:177)
at sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.java:1316)
at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1291)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:250)
at RestClientPost.main(RestClientPost.java:78)
知道为什么会这样吗
我已通过删除身份验证更改了代码,并添加了以下代码
Authenticator.setDefault(new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("User", "secretpw".toCharArray());
}
});
但也有类似的错误。关于同一问题的任何建议如果telnet不工作,您应该检查您的服务器是否在代理服务器后面。您还应该检查是否有防火墙。@frankfurt laravel:我可以使用443 wikipedia https,所以这个特定URL是否可能需要任何防火墙解除阻止,以便能够从本地访问它。@CyrilG:这里不确定代理。我知道我们有防火墙。但是像wikipedia这样的公共url使用的是443,但是这个url使用的是我的本地url,而不是服务器。那么,想想我能做些什么呢?请与您的网络团队联系,将此url添加到您的代理的授权url中
Authenticator.setDefault(new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("User", "secretpw".toCharArray());
}
});