HttpClient 实际小应用

工作中根据公司代码风格编写的HttpClient测试Util,有需要的同事可以借用下;
HttpClient入门地址:https://www.ibm.com/developerworks/cn/opensource/os-httpclient/
代码如下:

import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.Map; 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 com.google.gson.Gson; public class HttpClientUtil {  /**   *   * @param reqList 访问的参数,注意查看代码中的解析List中的Map只有两个值 key 与 value

  * @param url  访问的地址   * @return   void -> Bean(返回结果转化为你需要的Bean)   */  public static void executeRequest(List<Map> reqList, String url){   List<HttpParam> list = new ArrayList<HttpParam>();   HttpParam httpParam = new HttpParam();   httpParam.setKey("req");   httpParam.setValue(getValue(reqList));   list.add(httpParam);   String resutl = executeRequest(list,url);   resutl = resutl.substring(8, resutl.length()-1);   System.out.println(resutl);   //Gson gson = new Gson();   //结果Bean respBean = gson.fromJson(resutl, 结果Bean.class);   //return respBean;  }  /**   * 获取参数的方法(按照代码传参的规则来修改)   * @param list   * @param flag   * @return   */  private static String getValue(List<Map> list) {   StringBuffer data = new StringBuffer();   data.append("{");   if(list != null && list.size() > 0){    for(int i = 0; i < list.size(); i++) {     Map map = list.get(i);     data.append("\"");     data.append(nvlTOString( map.get("key"), "key" ));     data.append("\":\"");     data.append(nvlTOString( map.get("value"), "value" ));     data.append("\"");    }   }   data.append("}");   return data.toString();  }  public static String nvlTOString(Object inObject,String defaultString){   String retString = "";   if(inObject!=null){    retString=String.valueOf(inObject).toString();   }else{    retString=defaultString;   }   return retString;  }  /**   * HttpClient调用接口   * @param list   * @param url   * @return   */  public static String executeRequest(List<HttpParam> list, String url) {   // 响应内容   String result = "";   // 定义http客户端对象--httpClient   HttpClient httpClient = new HttpClient();   // 定义并实例化客户端链接对象-postMethod   PostMethod postMethod = new PostMethod(url);   try {    // 设置http的头    postMethod.setRequestHeader("ContentType",      "application/x-www-form-urlencoded;charset=UTF-8");    // 将表单的值放入postMethod中    postMethod.setRequestBody(convMap(list));    // 定义访问地址的链接状态    int statusCode = 0;    try {     // 客户端请求url数据     statusCode = httpClient.executeMethod(postMethod);    } catch (Exception e) {     e.printStackTrace();    }    System.out.println("statusCode:  " + statusCode + "   DESC: "      + postMethod.getStatusText());    // 请求成功状态-200    if (statusCode == HttpStatus.SC_OK) {     try {      //String charSet =  postMethod.getResponseCharSet();      result = postMethod.getResponseBodyAsString();      //System.out.println("返回结果的编码格式 = " + charSet);      //byte[] bytes = result.getBytes("ISO-8859-1"); //解码      //result = new String(bytes,"UTF-8"); //编码     } catch (IOException e) {      e.printStackTrace();     }    } else {     System.out.println("请求返回状态 = " + statusCode);    }   } catch (Exception e) {    System.out.println(e.getMessage());   } finally {    // 释放链接    postMethod.releaseConnection();    httpClient.getHttpConnectionManager().closeIdleConnections(0);   }   return result;  }  private static NameValuePair[] convMap(List<HttpParam> paramList) {   // 请求参数   NameValuePair[] data = null;   // 设置请求参数   if (paramList != null) {    data = new NameValuePair[paramList.size()];

   for (int i = 0; i < paramList.size(); i++) {     data[i] = new NameValuePair(paramList.get(i).getKey(),       paramList.get(i).getValue());    }   }   return data;  } } /**  * HttpClient参数Bean  * @author User  *  */ class HttpParam {  /**   * 入参KEY   */  private String key;  /**   * 入参VALUE   */  private String value;  public String getKey() {   return key;  }  public void setKey(String key) {   this.key = key;  }  public String getValue() {   return value;  }  public void setValue(String value) {   this.value = value;  }  @Override  public String toString() {   return "HttpParam [key=" + key + ", value=" + value + "]";  } }

希望对你有帮助,祝你有一个好心情,加油!

若有错误、不全、可优化的点,欢迎纠正与补充!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
内容来自互联网,如有侵权通知后删除 sqluldr2是一款Oracle数据快速导出工具,包含32、64位程序,sqluldr2在大数据量导出方面速度超快,能导出亿级数据为excel文件,另外它的导入速度也是非常快速,功能是将数据以TXT/CSV等格式导出,有需要的赶快下载吧! oracle数据导出工具sqluldr2 基本简介   下载完sqluldr解压后,文件夹内容如下:   sqluldr2.exe 用于32位windows平台;   sqluldr2_linux32_10204.bin 适用于linux32位操作系统;   sqluldr2_linux64_10204.bin 适用于linux64位操作系统;   sqluldr264.exe 用于64位windows平台。 使用方法   1、首先将sqluldr2.exe复制到执行目录下,即可开始使用   2、查看help 帮助 sqluldr2 官方下载   3、执行数据导出命令   3.1、常规导出   sqluldr2 test/test@127.0.1.1/orcl query="select * from temp_001" head=yes file=d:\tmp001.csv   说明:head=yes 表示输出表头 oracle数据导出工具sqluldr2   3.2、使用sql参数   sqluldr2 test/test@127.0.1.1/orcl sql=test_sql.sql head=yes file=d:\tmp001.csv   test_sql的内容为:   select * from temp_001 sqluldr2 官方下载   3.3、使用log参数   当集成sqluldr2在脚本中时,就希望屏蔽上不输出这些信息,但又希望这些信息能保留,这时可以用“LOG”选项来指定日志文件名。   sqluldr2 test/test@127.0.1.1/orcl sql=test_sql.sql head=yes file=d:\tmp001.csv log=+d:\tmp001.log oracle数据导出工具sqluldr2   3.4、使用 table 参数   当使用 table 参数时,在目录下会生成对应的ctl控制文件,如下语句会生成temp_001_sqlldr.ctl文件。   sqluldr2 test/test@127.0.1.1/orcl query="select * from temp_001" table=temp_001 head=yes file=d:\tmp001.csv sqluldr2 官方下载   生成的控制文件temp_001_sqlldr.ctl的内容如下: oracle数据导出工具sqluldr2   4、主要参数说明   Field 分隔符 指定字段分隔符,默认为逗号   record 分隔符 指定记录分隔符,默认为回车换行,Windows下的换行   quote 引号符 指定非数字字段前后的引号符   例如现在要改变默认的字段分隔符,用“#”来分隔记录,导出的命令如下所示:   sqluldr2 test/test sql=tmp.sql field=#   在指定分隔符时,可以用字符的ASCII代码(0xXX,大写的XX为16进制的ASCII码值)来指定一个字符,常用的字符的ASCII代码如下:   回车=0x0d,换行=0x0a,TAB键=0x09,|=0x7c,&=0x26,双引号=0x22,单引号=0x27   在选择分隔符时,一定不能选择会在字段值中出现的字符

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值