使用org.apache.commons.httpclient

这里是get请求

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.commons.codec.digest.DigestUtils;
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.apache.commons.lang.StringUtils;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.type.TypeReference;

public class GetDataTest {
    public static void main(String[] args) {
        String url = "http://xx/xx/xx";

        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
        String date = sdf.format(new Date());
        String sec = DigestUtils.md5Hex("XTPT" + date).toUpperCase();

        // 构造HttpClient实例
        HttpClient client = new HttpClient();
        // 构造请求方法的实例
        GetMethod method = new GetMethod(url + "?Ck=" + sec);

        client.getParams().setContentCharset("UTF-8");
        // 使用系统提供的默认的恢复策略
        client.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler());
        method.setRequestHeader("ContentType", "application/x-www-form-urlencoded;charset=UTF-8");

        int statusCode = -1;
        try {
            // 获取返回的状态码
            statusCode = client.executeMethod(method);
            if (statusCode != HttpStatus.SC_OK) {
                throw new IllegalStateException("Method failed: " + method.getStatusLine());
            }
            // 获取返回的结果
            String result = method.getResponseBodyAsString();
            // 转换的目标类型
            TypeReference<List<Map<String, String>>> tr = new TypeReference<List<Map<String, String>>>() {
            };
            if (StringUtils.isNotEmpty(result) && !result.equals("Error")) {
                // 解析JSON数据成目标类型
                List<Map<String, String>> dataList = new ObjectMapper().readValue(result, tr);
                for (Map<String, String> map : dataList) {
                    System.out.println(map);
                }
            } else {
                System.err.println("无法获取请求结果,请检查");
            }
        } catch (HttpException e) {
            // 发生致命的异常,可能是协议不对或者返回的内容有问题
            System.out.println("Please check your provided http address!");
        } catch (IOException e) {
            // 发生网络异常
            e.printStackTrace();
        } finally {
            method.releaseConnection();
        }
    }
}

这里是post请求

import java.io.IOException;

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.NameValuePair;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.params.HttpMethodParams;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;

public class PostDataTest {

    private final static String Url = "http://xx";
    private final static String account = "cf_123456";
    private final static String password = "afcac35b6bf4b4e040feeaabf38ae78c";
    private final static String telephone = "13911111111";

    public static void main(String[] args) {
        HttpClient client = new HttpClient();
        PostMethod method = new PostMethod(Url);

        client.getParams().setContentCharset("UTF-8");
        client.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler());
        method.setRequestHeader("ContentType", "application/x-www-form-urlencoded;charset=UTF-8");

        int mobile_code = (int) ((Math.random() * 9 + 1) * 100000);

        String content = new String("您的验证码是:" + mobile_code + "。请不要把验证码泄露给其他人。");

        // 短信参数
        NameValuePair[] data = { 
                new NameValuePair("account", account), 
                new NameValuePair("password", password), 
                new NameValuePair("mobile", telephone), 
                new NameValuePair("content", content), };
        method.setRequestBody(data);

        try {
            int statusCode = client.executeMethod(method);
            if (statusCode != HttpStatus.SC_OK) {
                throw new IllegalAccessError("HttpMethod Failed");
            }
            String SubmitResult = method.getResponseBodyAsString();

            Document doc = DocumentHelper.parseText(SubmitResult);
            Element root = doc.getRootElement();

            String code = root.elementText("code");

            if (code.equals("2")) {
                System.out.println("发送成功");
            }

        } catch (HttpException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (DocumentException e) {
            e.printStackTrace();
        }
    }
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值