在项目的过程中,需要用到短信服务,一开始使用网易云信提供的短信接口,所以在网上找了一份demo就可以实现功能。但是网易云信主要针对的是公司,对于个人开发者来说,一次性没有那么多的需求,所以就不得不临时换了一个短信接口服务商。
这时候就在同学的途径中了解到了bmob比目云服务。但是有一个问题,就是bmob并没有提供java的demo,所以自己在官方提供的RestfulDemo基础上进行了拓展,使得java可以通过httpURLConnection来完成短信接口的请求。
官方提供的demo
curl -X POST \
-H "X-Bmob-Application-Id: Your Application ID" \
-H "X-Bmob-REST-API-Key: Your REST API Key" \
-H "Content-Type: application/json" \
-d '{"mobilePhoneNumber": "186xxxxxxxx", "content":"您的验证码是:222222, 有效期是10分钟。"}' \
https://api.bmob.cn/1/requestSms
由于curl是linux中url语法在命令行方式下工作的传输工具,所以为了将curl里涉及到的内容转化为java中的内容,就需要用到java中的HttpURLConnection接口。具体内容如下:
String param = "{\"mobilePhoneNumber\":\""+phone+"\",\"content\":\""+content+"\"}";
try{
String url ="https://api.bmob.cn/1/requestSms";
URL realUrl = new URL(url);
System.out.println(url);
HttpURLConnection conn = (HttpURLConnection) realUrl.openConnection();
conn.setDoOutput(true);
conn.setRequestProperty("X-Bmob-Application-Id", ApplicationId);
conn.setRequestProperty("X-Bmob-REST-API-Key", key);
conn.setRequestProperty("Content-Type", "application/json");
conn.setRequestMethod("POST");
conn.connect();
OutputStream out = conn.getOutputStream();
out.write((param).getBytes("UTF-8"));
out.flush();
out.close();
if (conn.getResponseCode() == 200) {
System.out.println("发送成功");
}
}catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
有关的内容在以下的论坛中提及,但是里面json传输的内容有错StackOverflow