项目结构如图所示:
1、创建一个Http的模拟请求工具类,然后写一个POST方法或者GET方法
/**
- 文件说明
- @Description:扩展说明
- @Copyright: 2015 dreamtech.com.cn Inc. All right reserved
- @Version: V6.0 */ package com.demo.util;
import java.io.IOException;
import java.util.Map;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.SimpleHttpConnectionManager;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.*;
/**
- @Author: feizi
- @Date: 2015年4月17日 上午9:26:34
- @ModifyUser: feizi
- @ModifyDate: 2015年4月17日 上午9:26:34
-
@Version:V6.0
*/
public class HttpRequestUtil {/**
-
HttpClient 模拟POST请求
- 方法说明
- @Discription:扩展说明
- @param url
- @param params
- @return String
- @Author: feizi
- @Date: 2015年4月17日 下午7:15:59
- @ModifyUser:feizi
- @ModifyDate: 2015年4月17日 下午7:15:59 */ public static String postRequest(String url, Map params) { //构造HttpClient的实例 HttpClient httpClient = new HttpClient();
//创建POST方法的实例
PostMethod postMethod = new PostMethod(url);//设置请求头信息
postMethod.setRequestHeader("Connection", "close");//添加参数
for (Map.Entry entry : params.entrySet()) {
postMethod.addParameter(entry.getKey(), entry.getValue());
}//使用系统提供的默认的恢复策略,设置请求重试处理,用的是默认的重试处理:请求三次
httpClient.getParams().setBooleanParameter("http.protocol.expect-continue", false);//接收处理结果
String result = null;
try {
//执行Http Post请求
httpClient.executeMethod(postMethod);//返回处理结果 result = postMethod.getResponseBodyAsString();
} catch (HttpException e) {
// 发生致命的异常,可能是协议不对或者返回的内容有问题
System.out.println("请检查输入的URL!");
e.printStackTrace();
} catch (IOException e) {
// 发生网络异常
System.out.println("发生网络异常!");
e.printStackTrace();
} finally {
//释放链接
postMethod.releaseConnection();//关闭HttpClient实例 if (httpClient != null) { ((SimpleHttpConnectionManager) httpClient.getHttpConnectionManager()).shutdown(); httpClient = null; }
}
return result;
}
/**
-
HttpClient 模拟GET请求
- 方法说明
- @Discription:扩展说明
- @param url
- @param params
- @return String
- @Author: feizi
- @Date: 2015年4月17日 下午7:15:28
- @ModifyUser:feizi
- @ModifyDate: 2015年4月17日 下午7:15:28 */ public static String getRequest(String url, Map params) { //构造HttpClient实例 HttpClient client = new HttpClient();
//拼接参数
String paramStr = "";
for (String key : params.keySet()) {
paramStr = paramStr + "&" + key + "=" + params.get(key);
}
paramStr = paramStr.substring(1);//创建GET方法的实例
GetMethod method = new GetMethod(url + "?" + paramStr);//接收返回结果
String result = null;
try {
//执行HTTP GET方法请求
client.executeMethod(method);//返回处理结果 result = method.getResponseBodyAsString();
} catch (HttpException e) {
// 发生致命的异常,可能是协议不对或者返回的内容有问题
System.out.println("请检查输入的URL!");
e.printStackTrace();
} catch (IOException e) {
// 发生网络异常
System.out.println("发生网络异常!");
e.printStackTrace();
} finally {
//释放链接
method.releaseConnection();//关闭HttpClient实例 if (client != null) { ((SimpleHttpConnectionManager) client.getHttpConnectionManager()).shutdown(); client = null; }
}
return result;
}
}
2、再创建一个类,生成验证码,然后传递相应的参数
/**- 文件说明
- @Description:扩展说明
- @Copyright: 2015 dreamtech.com.cn Inc. All right reserved
- @Version: V6.0 */ package com.demo.util;
-
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;
/**
- @Author: feizi
- @Date: 2015年4月17日 上午9:24:48
- @ModifyUser: feizi
- @ModifyDate: 2015年4月17日 上午9:24:48
-
@Version:V6.0
*/
public class SendMsgUtil {/**
-
发送短信消息
- 方法说明
- @Discription:扩展说明
- @param phones
- @param content
- @return
- @return String
- @Author: feizi
- @Date: 2015年4月17日 下午7:18:08
- @ModifyUser:feizi
- @ModifyDate: 2015年4月17日 下午7:18:08 */ @SuppressWarnings("deprecation") public static String sendMsg(String phones,String content){ //短信接口URL提交地址 String url = "短信接口URL提交地址";
Map params = new HashMap();
params.put("zh", "用户账号");
params.put("mm", "用户密码");
params.put("dxlbid", "短信类别编号");
params.put("extno", "扩展编号");//手机号码,多个号码使用英文逗号进行分割
params.put("hm", phones);
//将短信内容进行URLEncoder编码
params.put("nr", URLEncoder.encode(content));return HttpRequestUtil.getRequest(url, params);
}
/**
- 随机生成6位随机验证码
- 方法说明
- @Discription:扩展说明
- @return
- @return String
- @Author: feizi
- @Date: 2015年4月17日 下午7:19:02
- @ModifyUser:feizi
- @ModifyDate: 2015年4月17日 下午7:19:02 */ public static String createRandomVcode(){ //验证码 String vcode = ""; for (int i = 0; i < 6; i++) { vcode = vcode + (int)(Math.random() * 9); } return vcode; }
/**
- 测试
- 方法说明
- @Discription:扩展说明
- @param args
- @return void
- @Author: feizi
- @Date: 2015年4月17日 下午7:26:36
- @ModifyUser:feizi
- @ModifyDate: 2015年4月17日 下午7:26:36 */ public static void main(String[] args) { // System.out.println(SendMsgUtil.createRandomVcode()); // System.out.println("&ecb=12".substring(1)); System.out.println(sendMsg("18123456789,15123456789", "尊敬的用户,您的验证码为" + SendMsgUtil.createRandomVcode() + ",有效期为60秒,如有疑虑请详询400-069-2886(客服电话)【XXX中心】")); } }
-
现在是HttpRequestUtil中报如下错误:
1:
The method getParams() is undefined for the type HttpClient
2:
The method shutdown() is undefined for the type SimpleHttpConnectionManager