在项目发送短信方案中通过第三方提供的http链接方式来发送短信,采用了java sockt方案来解决,但是在应用过程中出现了一个奇怪的问题,加以记录:
代码如下:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.Date;
/**
* 发送短信
* @author Administrator
*
*/
public class SendSms {
public static void sendMessage(String phone,String message){
try {
//message = message.replace(" ", "_");
URL url = new URL("http://219.130.221.131:8080/smsInterface/servlet/SendSms?tomobile="+phone+"&smscontent="+message+"&source=xzfwzx&xcode=300003");
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setDoOutput(true);
conn.setRequestMethod("POST");
String req = String.format("req=%s",URLEncoder.encode("gbk2312","utf-8"));
OutputStream out = conn.getOutputStream();
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(out));
writer.write(req);
writer.flush();
//read response
InputStreamReader isr = new InputStreamReader(conn.getInputStream(),"utf-8");
BufferedReader reader = new BufferedReader(isr);
StringBuffer res = new StringBuffer("");
String flag = "";
while ((flag = reader.readLine()) != null) {
res.append(flag);
}
out.close();
writer.close();
reader.close();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
public static void main(String[] args){
String phone = "13575745002";
String message = "你存在催办业务,业务编号:2013120011,受理时间:2013-12-06 15:36:40.0,现阶段剩余时间:1天,请抓紧时间办理!发送时间:"+new Date().toLocaleString();
SendSms.sendMessage(phone, message);
}
}
sokect报错:
Server returned HTTP response code: 505 for URL
原因:因为url中包含空格,
解决方案:替换掉短信息中的空格
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.Date;
/**
* 发送短信
* @author Administrator
*
*/
public class SendSms {
public static void sendMessage(String phone,String message){
try {
message = message.replace(" ", "_");
URL url = new URL("http://219.130.221.131:8080/smsInterface/servlet/SendSms?tomobile="+phone+"&smscontent="+message+"&source=xzfwzx&xcode=300003");
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setDoOutput(true);
conn.setRequestMethod("POST");
String req = String.format("req=%s",URLEncoder.encode("gbk2312","utf-8"));
OutputStream out = conn.getOutputStream();
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(out));
writer.write(req);
writer.flush();
//read response
InputStreamReader isr = new InputStreamReader(conn.getInputStream(),"utf-8");
BufferedReader reader = new BufferedReader(isr);
StringBuffer res = new StringBuffer("");
String flag = "";
while ((flag = reader.readLine()) != null) {
res.append(flag);
}
out.close();
writer.close();
reader.close();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
public static void main(String[] args){
String phone = "13575745002";
String message = "你存在催办业务,业务编号:2013120011,受理时间:2013-12-06 15:36:40.0,现阶段剩余时间:1天,请抓紧时间办理!发送时间:"+new Date().toLocaleString();
SendSms.sendMessage(phone, message);
}
}
如此,问题解决了。
但是还是不知道java sockt通信问什么会因为空格而导致报错,但是这样的确解决了问题。短信可以成功发送.
分享到:
相关推荐
java服务器客户端Socket调用基本功能的实现举例
两者之间使用基于TCP的Socket通信方式。可是,做了一个测试小例子,结果从客户端传过来的都是乱码。于是上网查,希望可以找到解决方法,可是,网上有好多的答案,经过了很多的实验,都不能很好的解决。没办法只能靠...
java实现联通SGIP短信接口
所以我对socket进行了封装,客户端和服务端可以通过配置注解,让双方相互调用注解方法,提供了专门的工具类,让注解方法可以支持返回list或map等集合或其他的类型,三行代码你就可以完美的使用socket进行通信,支持...
java socket USB和 串口通讯,使用java程序与硬件通讯的三种方式。
JAVA利用HttpClient进行HTTPS接口调用
java socket教程java socket教程java socket教程
通过Socket发送邮件的Java小程序
java socket使用加密协议传输对象
在Java中用socket进行客户/服务器之间的通信编程。Socket是两个实体之间进行通信的有效端点。通过socket可以获得源IP地址和源端口、终点IP地址和终点端口。用户可以将多个socket连入同一个端口,以便对于单个端口...
Socket类是负责处理客户端通信的Java类。本文主要是介绍java使用Socket类接收和发送数据,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
Java语言Socket接口用法详解.doc Java语言Socket接口用法详解.doc Java语言Socket接口用法详解.doc Java语言Socket接口用法详解.doc Java语言Socket接口用法详解.doc Java语言Socket接口用法详解.doc Java语言Socket...
HTML5,Socket接口,例子,HTML5.WebSocket,亲手调试,有图形介绍
java socket通信自定义消息协议,socket以字节码的方式通信传递,客户端与服务器端分别进行转换与解析的过程实现简单的消息协议。
Java Socket 实现SMTP邮件发送,支持SSL/TSL
JAVA Socket教程 Java网络编程之传输控制协议 Socket套接字—Java套接字编程
Java Socket 聊天通信演示代码 Java Socket 聊天通信演示代码
基于java socket发送http请求。这种原生的发送请求的方式能适合一些特定场景,比如: A向B发送请求,A不考虑B是否处理成功,即A不关注B的响应结果,那么A就不用阻塞等B的回应。 传统的Httpclient请求方式都是阻塞...
java socket client 断线重连的简单实现 有什么意见可以提哦
java socket 学习资料java socket 学习资料java socket 学习资料java socket 学习资料java socket 学习资料