curl与HttpURLConnection

在项目的过程中,需要用到短信服务,一开始使用网易云信提供的短信接口,所以在网上找了一份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

你可能感兴趣的:(Java)