Java模拟Http post、get请求

来源:互联网 发布:常见电信网络诈骗试题 编辑:程序博客网 时间:2024/04/30 15:52
   /**     * post     * 2016-6-12 下午2:16:14  李锋镝     * @param url POST地址     * @param data POST数据NameValuePair[]     * @return 响应的参数     */    public static String post(String url,NameValuePair[] data){                 String response = "";                 HttpClient httpClient = new HttpClient();        PostMethod postMethod = new PostMethod(url);                 //设置请求编码        postMethod.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET,"GBK");                 postMethod.setRequestBody(data);                 //设置请求头header参数        postMethod.setRequestHeader("userId","57601095");        postMethod.setRequestHeader("userSession","57601095");        postMethod.setRequestHeader("cityid","31000");                 int statusCode = 0;                 try {            statusCode = httpClient.executeMethod(postMethod);        } catch (HttpException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        }                 //301、302重定向        if(statusCode == HttpStatus.SC_MOVED_PERMANENTLY || statusCode == HttpStatus.SC_MOVED_TEMPORARILY){            Header locationHeader = postMethod.getResponseHeader("location");             String location = null;             if (locationHeader != null) {                 location = locationHeader.getValue();                 System.out.println("重定向跳转页面:" + location);                 response= post(location,data);//用跳转后的页面重新请求。             } else {                 System.err.println("location is null.");             }        }else {             System.out.println(postMethod.getStatusLine());             try {                 byte[] b=postMethod.getResponseBody();                response = new String(b,"GBK");            } catch (IOException e) {                 e.printStackTrace();             }             postMethod.releaseConnection();         }                 System.out.println("POST响应参数:"+response);                 return response;    }         /**     * get方式     * 2016-6-12 下午2:38:45  李锋镝     * @param url     * @return     */    public static String get(String url){                 String response = "";                 HttpClient httpClient = new HttpClient();        GetMethod getMethod = new GetMethod(url);                 getMethod.setRequestHeader("userId","56166702");        getMethod.setRequestHeader("userSession","56166702");        getMethod.setRequestHeader("cityid","31000");                 int statusCode = 0;                 try {            statusCode = httpClient.executeMethod(getMethod);        } catch (HttpException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        }                 //301、302重定向        if(statusCode == HttpStatus.SC_MOVED_PERMANENTLY || statusCode == HttpStatus.SC_MOVED_TEMPORARILY){            Header locationHeader = getMethod.getResponseHeader("location");             String location = null;             if (locationHeader != null) {                 location = locationHeader.getValue();                 System.out.println("重定向跳转页面:" + location);                 response= get(location);//用跳转后的页面重新请求。             } else {                 System.err.println("location is null.");             }        }else {             System.out.println(getMethod.getStatusLine());             try {                 byte[] b=getMethod.getResponseBody();                response = new String(b,"GBK");            } catch (IOException e) {                 e.printStackTrace();             }             getMethod.releaseConnection();         }                 System.out.println("GET响应参数:"+response);                 return response;    }

对于post请求,我们需要根据对应接口的编码设置请求编码,防止中文乱码。请求需要的参数则放在NameValuePair数组中,NameValuePair用法如下:

NameValuePair page = new NameValuePair("page", "1");NameValuePair pageCount = new NameValuePair("pageCount", "10");NameValuePair state = new NameValuePair("state", "1");NameValuePair[] data = {page,pageCount,state};

而get请求,则不需要改变编码,默认的ISO-8859-1编码,一般后台会根据这个处理中文,请求的时候只需要写好请求的url即可。

原文地址:李锋镝的个人博客>>http://www.lifengdi.com/article/10034.html

0 0
原创粉丝点击