IO流、HttpClient、GET方式请求MT发送短信
来源:互联网 发布:python实现软件license 编辑:程序博客网 时间:2024/06/09 23:52
/* *文件名:HttpClientTest.java *描 述:描述类文件的作用与职责 *版 权:长沙江泓信息技术有限公司 Copyright (c) 2009-2013,All Rights Reserved. *创建者:向洁 *修改者:向洁 */package org.xiangjie.mt.get;import java.io.IOException;import java.net.URLEncoder;import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler;import org.apache.commons.httpclient.HttpClient;import org.apache.commons.httpclient.HttpException;import org.apache.commons.httpclient.HttpStatus;import org.apache.commons.httpclient.methods.GetMethod;import org.apache.commons.httpclient.params.HttpMethodParams;import org.dom4j.DocumentHelper;import org.dom4j.Element;/** * @Description (商信通HttpClient,GET方式请求demo) * @author 向洁 * @version JOHOM V1.0 * @Date 2013-8-31-下午2:46:33 * @see */public class HttpClientGet { public static void main(String [] args) throws Exception{ /*创建httpclinet对象,并设置参数 */ HttpClient httpclient = new HttpClient(); //设置 Http连接超时为15秒 httpclient.getHttpConnectionManager().getParams().setConnectionTimeout(15000); String encoding = "GBK"; //设置编码格式为GBK String content = URLEncoder.encode("今晚打老虎",encoding); //短信内容 /*通过get方式请求参数 *user,用户名称 *pwd, 用户密码 *channel,系统为你分配的通道 *phonelist,手机号码串 *content,信息内容 */ GetMethod getMethod = new GetMethod("请求地址user=用户名&pwd=密码&channel=通道&phonelist=号码串&cont="+内容); /*创建getMethod对象,并设置参数 */ getMethod.getParams().setParameter(HttpMethodParams.SO_TIMEOUT, 15000); //设置 get请求超时为 15 秒 getMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler()); //使用系统提供默认的重试处理,求三次 /*扑捉异常*/ try{ /*执行 HTTP,GET请求 */ int statusCode = httpclient.executeMethod(getMethod); /*判断访问的状态码 */ if (statusCode != HttpStatus.SC_OK) { System.err.println("Method failed: "+ getMethod.getStatusLine()); } /*处理 HTTP,返回内容 */ byte [] responseBody = getMethod.getResponseBody(); //读取字节数组 /*将回执保存到字符串str*/ String str = new String (responseBody,encoding); System.out.println(str); /*解析XML文件* *方式一,DocumentHelper 方式解析 *方式二,SAXReader 方式解析 */ Element root = DocumentHelper.parseText(str).getRootElement(); if("1".equalsIgnoreCase(root.elementTextTrim("status"))){ System.out.println("回执结果" + root.elementTextTrim("status")); System.out.println("成功"); }else{ System.out.println("失败"); System.out.println("错误原因:"+root.elementTextTrim("error")); System.out.println("发送序列号:"+root.elementTextTrim("seq")); } }catch (HttpException e) { System.out.println("发生异常,可能是协议不对或者返回的内容有问题!"); e.printStackTrace(); }catch (IOException e) { System.out.println("执行HTTP,GET请求" + getMethod + "时,发生异常!"); e.printStackTrace(); }finally { //释放连接 getMethod.releaseConnection(); } }}
/* *文件名:IoTest.java *描 述:描述类文件的作用与职责 *版 权:长沙江泓信息技术有限公司 Copyright (c) 2009-2013,All Rights Reserved. *创建者:向洁 *修改者:向洁 */package org.xiangjie.mt.get;import java.io.IOException;import java.io.InputStream;import java.net.HttpURLConnection;import java.net.URL;import java.net.URLEncoder;import org.apache.commons.io.IOUtils;import org.dom4j.DocumentHelper;import org.dom4j.Element;/** * @Description (商信通IO流GET方式请求demo) * @author 向洁 * @version JOHOM V1.0 * @Date 2013-8-31-上午9:45:01 * @see */public class IoTest {public static void main(String [] args) throws IOException{ HttpURLConnection connection = null; //创建connection连接对象 InputStream inputStream = null; //创建输入字节流对象 String encoding = "GBK"; //设置编码格式为GBK String url = "请求地址"; //请求地址 String content = URLEncoder.encode("今晚打老虎",encoding); //短信内容 /*通过GET方式请求参数 *user,用户名称 *pwd, 用户密码 *channel,系统为你分配的通道 *phonelist,手机号码串 *content,信息内容 */ String param = "user=用户名&pwd=密码&channel=通道&phonelist=号码串&cont="+内容; /*扑捉异常*/ try { /*通过GET方式请求连接*/ System.out.println(url + "?" + param); connection = (HttpURLConnection) new URL(url + "?"+ param).openConnection(); connection.setRequestMethod("GET"); connection.setDoOutput(true); connection.setUseCaches(false); connection.setDoInput(true); connection.setConnectTimeout(15000); connection.connect(); /*返回内容处理*/ inputStream=connection.getInputStream(); String str =IOUtils.toString(inputStream ,encoding); //读取字节流,保存到字符串str System.out.println(str); /*解析XML文件* *方式一,DocumentHelper 方式解析 *方式二,SAXReader 方式解析 */ Element root = DocumentHelper.parseText(str).getRootElement(); /*status为1则表示发送成功,否则为失败*/ if("1".equalsIgnoreCase(root.elementTextTrim("status"))){ System.out.println("回执结果:"+root.elementTextTrim("status")); System.out.println("成功"); }else{ System.out.println("失败"); System.out.println("错误原因:"+root.elementTextTrim("error")); System.out.println("发送序列号:"+root.elementTextTrim("seq")); } }catch(Exception ex){ ex.printStackTrace(); }finally{ /*关闭连接对象,输入字节流*/ if(connection != null){ connection.disconnect(); connection = null; } if (inputStream != null) { try { inputStream.close(); inputStream = null;} catch (Exception ex1) {System.out.println("执行HTTP,GET请求" + url + "时,发生异常!"); ex1.printStackTrace();}}}}}