最近的有个项目需要调用外国的短信平台,顺便就了解了下HttpURLConnection
//这是一个请求短信发送的报文
public static String sendMacau(int channelid,List<String> phonelist, String content) throws Exception{
try{
Map<Object,Object> subSysMap = MemCacheUtils.getSubSysConfigsByCache(CacheKeyContants.SUB_SYS_SYSCONF_KEY, StringUtil.trim(channelId));
String mes_mobile_macau_ucompany = StringUtil.trim(subSysMap.get("mes_mobile_macau_ucompany"));
String mes_mobile_macau_uname = StringUtil.trim(subSysMap.get("mes_mobile_macau_uname"));
String mes_mobile_macau_pwd = StringUtil.trim(subSysMap.get("mes_mobile_macau_pwd"));
<pre name="code" class="java"> //得到servlet地址
String mes_mobile_macau_url = StringUtil.trim(subSysMap.get("mes_mobile_macau_url"));
//实例化<span style="font-family: Arial, Helvetica, sans-serif;">HttpURLConnection </span>
HttpURLConnection conn=(HttpURLConnection)new URL(mes_mobile_macau_url).openConnection();
//拼接报文
StringBuffer sb = new StringBuffer();
sb.append("<?xml version='1.0' encoding='iso-8859-1'?>");
sb.append("<!DOCTYPE jds SYSTEM '/home/httpd/html/dtd/jds2.dtd'>");
sb.append("<jds>");
sb.append("<account acid='"+mes_mobile_macau_ucompany+"' loginid='"+mes_mobile_macau_uname+"' passwd='"+mes_mobile_macau_pwd+"'>");
sb.append("<msg_send>");
for (int i = 0; i < phonelist.size(); i++) {
sb.append("<recipient>"+phonelist.get(i)+"</recipient>");
}
sb.append("<content>"+content+"</content>");
sb.append("<language>C</language>");
sb.append("<sctime>"+DateUtils.NowStr()+"</sctime>");
sb.append("</msg_send>");
sb.append("</account>");
sb.append("</jds>");
String sendXml = sb.toString();
logger.info("生成xml:");
logger.info(sendXml);
<span style="white-space:pre"> </span> <span style="white-space:pre"> </span>//设置参数
conn.setRequestMethod("POST");
conn.setConnectTimeout(5 * 1000);//设置超时的时间
conn.setDoInput(true);
conn.setDoOutput(true);//如果通过post提交数据,必须设置允许对外输出数据
conn.setRequestProperty("Content-Type", "text/xml; charset=UTF-8");
conn.setRequestProperty("Content-Length", String.valueOf(sendXml.length()));
conn.connect();
//发送xml字符串
OutputStream outStream = conn.getOutputStream();
PrintWriter out = new PrintWriter(outStream);
out.print(sendXml);
out.flush();
out.close();
String result="";
InputStream inStream = conn.getInputStream();//得到服务器返回的报文文件流
/*BufferedReader in = new BufferedReader(new InputStreamReader(inStream));
String line;
while ((line = in.readLine()) != null) {
result += line;
}*/
//in.close();
//解析返回的xml
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document document = db.parse(inStream);
NodeList list = document.getElementsByTagName("jds");//jerr
for (int i = 0; i < list.getLength(); i++) {
Element element = (Element) list.item(i);
Node node=element.getElementsByTagName("jerr").item(0);
if(null!=node){
result = node.getNodeValue();
}
}
return result;
}catch (Exception e) {
e.printStackTrace();
logger.info("SMS sending:"+e.toString());
}
return "";
}