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