聚合数据请求post报文

import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

import org.apache.commons.httpclient.HttpClient;
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.apache.http.HttpException;
import org.apache.http.entity.StringEntity;

import net.sf.json.JSONObject;

public class TrainSearch {
public static void main(String[] args) throws HttpException, UnsupportedEncodingException {
// String url=“http://api.shujuzhihui.cn/api/airquality/allcity”;
String urldata=“http://api.shujuzhihui.cn/api/premises/img_type”;
Map<String, String> params = new HashMap<String, String>();
//查询空气质量
//params.put(“appKey”, “ee1fbea764bf49418f7bb0bd02ccd539”);
//查询各地楼盘
params.put(“appKey”, “e2b8e4bf87a74476a748f9ced47085e2”);
params.put(“house_id”, “123”);
//查询各地
String privicesurl=“http://api.shujuzhihui.cn/api/search/train”;
params.put(“appKey”, “732b48d3bb704c9b864edc08b8caa9d8”);
params.put(“train_date”, “2018-12-7”);
params.put(“from_station_name”, “上海南”);
params.put(“to_station_name”, “九江”);

   String result=doPost(privicesurl,params);
   System.out.println(result);   
   getRequest6();
}
public static String net(String strUrl, Map params,String method) throws Exception {
    HttpURLConnection conn = null;
    BufferedReader reader = null;
    String rs = null;
    try {
        StringBuffer sb = new StringBuffer();
        if(method==null || method.equals("GET")){
            strUrl = strUrl+"?"+urlencode(params);
        }
        URL url = new URL(strUrl);
        conn = (HttpURLConnection) url.openConnection();
        if(method==null || method.equals("GET")){
            conn.setRequestMethod("GET");
        }else{
            conn.setRequestMethod("POST");
            conn.setDoOutput(true);
        }
    
        conn.setUseCaches(false);
     
        conn.setInstanceFollowRedirects(false);
        conn.connect();
        if (params!= null && method.equals("POST")) {
            try {
                DataOutputStream out = new DataOutputStream(conn.getOutputStream());
                    out.writeBytes(urlencode(params));
            } catch (Exception e) {
                // TODO: handle exception
            }
        }
        InputStream is = conn.getInputStream();
        reader = new BufferedReader(new InputStreamReader(is));
        String strRead = null;
        while ((strRead = reader.readLine()) != null) {
            sb.append(strRead);
        }
        rs = sb.toString();
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        if (reader != null) {
            reader.close();
        }
        if (conn != null) {
            conn.disconnect();
        }
    }
    return rs;
}
  public static String urlencode(Map<String,String> data) {
        StringBuilder sb = new StringBuilder();
        for (Map.Entry i : data.entrySet()) {
            try {
                sb.append(i.getKey()).append("=").append(URLEncoder.encode(i.getValue()+"","UTF-8")).append("&");
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }
        }
        return sb.toString();
    }
public static void getRequest6(){
    String result =null;
    String url ="http://apis.juhe.cn/train/ticket.cc.php";//请求接口地址
    Map<String,String> params = new HashMap();//请求参数
        params.put("from","北京");//出发站名称:如上海虹桥
        params.put("to","上海");//到达站名称:如温州南
        params.put("date","2018-12-7");//默认当天,格式:2014-07-11
        params.put("tt","G");//车次类型,默认全部,如:G(高铁)、D(动车)、T(特快)、Z(直达)、K(快速)、Q(其他)
        params.put("key","732b48d3bb704c9b864edc08b8caa9d8");//应用APPKEY(应用详细页查询)

    try {
        result =net(url, params, "GET");
        JSONObject object = JSONObject.fromObject(result);
        if(object.getInt("error_code")==0){
            System.out.println(object.get("result"));
        }else{
            System.out.println(object.get("error_code")+":"+object.get("reason"));
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}
public static String doPost(String url, Map<String, String> paramMap) {
    // 获取输入流
    InputStream is = null;
    BufferedReader br = null;
    String result = null;
    // 创建httpClient实例对象
    HttpClient httpClient = new HttpClient();
    // 设置httpClient连接主机服务器超时时间:15000毫秒
    httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(15000);
    // 创建post请求方法实例对象
    PostMethod postMethod = new PostMethod(url);
    // 设置post请求超时时间
    postMethod.getParams().setParameter(HttpMethodParams.SO_TIMEOUT, 60000);

    NameValuePair[] nvp = null;
    // 判断参数map集合paramMap是否为空
    if (null != paramMap && paramMap.size() > 0) {// 不为空
        // 创建键值参数对象数组,大小为参数的个数
        nvp = new NameValuePair[paramMap.size()];
        // 循环遍历参数集合map
        Set<Entry<String, String>> entrySet = paramMap.entrySet();
        // 获取迭代器
        Iterator<Entry<String, String>> iterator = entrySet.iterator();

        int index = 0;
        while (iterator.hasNext()) {
            Entry<String, String> mapEntry = iterator.next();
            // 从mapEntry中获取key和value创建键值对象存放到数组中
            try {
                nvp[index] = new NameValuePair(mapEntry.getKey(),
                        new String(mapEntry.getValue().toString().getBytes("UTF-8"), "UTF-8"));
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }
            index++;
        }
    }
    // 判断nvp数组是否为空
    if (null != nvp && nvp.length > 0) {
        // 将参数存放到requestBody对象中
        postMethod.setRequestBody(nvp);
    }
    // 执行POST方法
    try {
        int statusCode = httpClient.executeMethod(postMethod);
        // 判断是否成功
        if (statusCode != HttpStatus.SC_OK) {
            System.err.println("Method faild: " + postMethod.getStatusLine());
        }
        // 获取远程返回的数据
        is = postMethod.getResponseBodyAsStream();
        // 封装输入流
        br = new BufferedReader(new InputStreamReader(is, "UTF-8"));

        StringBuffer sbf = new StringBuffer();
        String temp = null;
        while ((temp = br.readLine()) != null) {
            sbf.append(temp).append("\r\n");
        }

        result = sbf.toString();
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        // 关闭资源
        if (null != br) {
            try {
                br.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        if (null != is) {
            try {
                is.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        // 释放连接
        postMethod.releaseConnection();
    }
    return result;
}



public static String postRequest(String url, Map<String, String> params) throws HttpException {
    //构造HttpClient的实例
    HttpClient httpClient = new HttpClient();
    //创建POST方法的实例
    PostMethod postMethod = new PostMethod(url);
    //设置请求头信息
    StringEntity stringEntity=new StringEntity(params.toString(),"GBk");
    postMethod.setRequestHeader("Connection", "close");
    


    //添加参数
    for (Map.Entry<String, String> 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 (IOException e) {
        // 发生网络异常
        System.out.println("发生网络异常!");
        e.printStackTrace();
    } finally {
        //释放链接
        postMethod.releaseConnection();
      
    }
    return result;
}

}

猜你喜欢

转载自blog.csdn.net/weixin_37565521/article/details/84827010