联系SMS网关时出现Java套接字连接超时错误
这是我试图通过红氧服务器发送短信的代码 下面是我正在执行的代码 最终字符串requestURL=“” 执行时,我得到以下异常:联系SMS网关时出现Java套接字连接超时错误,java,http,sockets,sms,Java,Http,Sockets,Sms,这是我试图通过红氧服务器发送短信的代码 下面是我正在执行的代码 最终字符串requestURL=“” 执行时,我得到以下异常: java.net.ConnectException: Connection timed out: connect at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333) at java.
java.net.ConnectException: Connection timed out: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
at java.net.Socket.connect(Socket.java:525)
at sun.net.NetworkClient.doConnect(NetworkClient.java:158)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:394)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:529)
at sun.net.www.http.HttpClient.<init>(HttpClient.java:233)
at sun.net.www.http.HttpClient.New(HttpClient.java:306)
at sun.net.www.http.HttpClient.New(HttpClient.java:323)
at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:860)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:801)
at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:726)
at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:904)
at com.nextenders.server.LoginServlet.SendSMS(LoginServlet.java:143)
java.net.ConnectException:连接超时:连接
位于java.net.PlainSocketImpl.socketConnect(本机方法)
位于java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
位于java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
位于java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
位于java.net.socksocketimpl.connect(socksocketimpl.java:366)
位于java.net.Socket.connect(Socket.java:525)
位于sun.net.NetworkClient.doConnect(NetworkClient.java:158)
位于sun.net.www.http.HttpClient.openServer(HttpClient.java:394)
位于sun.net.www.http.HttpClient.openServer(HttpClient.java:529)
http.HttpClient.(HttpClient.java:233)
http.HttpClient.New(HttpClient.java:306)
http.HttpClient.New(HttpClient.java:323)
位于sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:860)
位于sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:801)
位于sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:726)
位于sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:904)
位于com.nextenders.server.LoginServlet.SendSMS(LoginServlet.java:143)
我尝试增加连接超时并关闭防火墙…等等,但没有成功。有人能帮我追踪问题吗
以下是我将要介绍的教程:
我的代码中的“*”是网关的凭据 以下代码在我使用其他网站进行测试时运行良好(因为我没有访问消息API的权限):
它将toString
各种流,并在流未连接时进行错误处理。
最重要的更改是使用DataOutputStream.writeUTF
方法,而不仅仅是write
方法-这将确保POST
数据编码正确。我认为这不是您的问题,因为问题出在connect
您使用的示例代码似乎不知道Java命名约定或最佳实践,我已经对其进行了大量整理。
可以将流读取器拉出并放入单独的方法中,以避免重复。
我建议您将它指向另一个网站(我使用了我的作品),看看您是否得到了输出。
这是一个网络拓扑问题。您无法从您所在的位置连接到该站点。一些可能是你们自己的防火墙正在阻止它。与您的netadmin交谈。如果它无法连接,则它无法连接,似乎与代码无关。您可以从运行代码的计算机上访问URL,对吗?不,浏览器中还有一个带有0000的空页面。感谢您的快速响应。但是没有用,仍然是相同的例外。:(使用不同的网站?
java.net.ConnectException: Connection timed out: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
at java.net.Socket.connect(Socket.java:525)
at sun.net.NetworkClient.doConnect(NetworkClient.java:158)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:394)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:529)
at sun.net.www.http.HttpClient.<init>(HttpClient.java:233)
at sun.net.www.http.HttpClient.New(HttpClient.java:306)
at sun.net.www.http.HttpClient.New(HttpClient.java:323)
at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:860)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:801)
at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:726)
at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:904)
at com.nextenders.server.LoginServlet.SendSMS(LoginServlet.java:143)
final String requestURL = "http://www.redoxygen.net/sms.dll?Action=SendSMS";
final StringBuilder stringBuilder = new StringBuilder();
try {
stringBuilder.append("AccountId=").append(URLEncoder.encode("****", "UTF-8"))
.append("&Email=").append(URLEncoder.encode("*******", "UTF-8"))
.append("&Password=").append(URLEncoder.encode("******", "UTF-8"))
.append("&Recipient=").append(URLEncoder.encode("******", "UTF-8"))
.append("&Message=").append(URLEncoder.encode("hello", "UTF-8"));
} catch (UnsupportedEncodingException e) {
throw new RuntimeException(e);
}
final URL address;
try {
address = new URL(requestURL);
} catch (MalformedURLException e) {
throw new RuntimeException(e);
}
final HttpURLConnection connection;
try {
connection = (HttpURLConnection) address.openConnection();
} catch (IOException e) {
throw new RuntimeException(e);
}
try {
connection.setRequestMethod("POST");
} catch (ProtocolException e) {
throw new RuntimeException(e);
}
connection.setDoInput(true);
connection.setDoOutput(true);
connection.setConnectTimeout(100000000);
try {
connection.connect();
} catch (IOException e) {
throw new RuntimeException(e);
}
final DataOutputStream output;
try {
output = new DataOutputStream(connection.getOutputStream());
} catch (IOException e) {
throw new RuntimeException(e);
}
try {
output.writeUTF(stringBuilder.toString());
} catch (IOException e) {
throw new RuntimeException(e);
}
final InputStream inputStream;
try {
inputStream = connection.getInputStream();
} catch (IOException e) {
final char[] buffer = new char[0x10000];
final StringBuilder stackBuilder = new StringBuilder();
final Reader in;
try {
in = new InputStreamReader(connection.getErrorStream(), "UTF-8");
} catch (UnsupportedEncodingException ex) {
throw new RuntimeException(ex);
}
try {
int read;
do {
read = in.read(buffer, 0, buffer.length);
if (read > 0) {
stackBuilder.append(buffer, 0, read);
}
} while (read >= 0);
System.out.println("Error response code from server. Error was:");
System.out.println(stackBuilder.toString());
} catch (IOException ex) {
throw new RuntimeException(ex);
} finally {
try {
in.close();
} catch (IOException ex) {
throw new RuntimeException(ex);
}
}
throw new RuntimeException(e);
}
final char[] buffer = new char[0x10000];
final StringBuilder stackBuilder = new StringBuilder();
final Reader in;
try {
in = new InputStreamReader(inputStream, "UTF-8");
} catch (UnsupportedEncodingException ex) {
throw new RuntimeException(ex);
}
try {
int read;
do {
read = in.read(buffer, 0, buffer.length);
if (read > 0) {
stackBuilder.append(buffer, 0, read);
}
} while (read >= 0);
System.out.println(stackBuilder.toString());
} catch (IOException ex) {
throw new RuntimeException(ex);
} finally {
try {
in.close();
} catch (IOException ex) {
throw new RuntimeException(ex);
}
}