IO流、HttpClient、GET方式请求MT发送短信

/*
 *文件名: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();
				}
				
			}
		}
	
	}
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值