1. public class HttpSimpleClient {
    /**
    * 发送GET请求。
    */
    static public HttpResult httpGet(String url, List<String> headers, List<String> paramValues,
    String encoding, long readTimeoutMs) throws IOException {
    String encodedContent = encodingParams(paramValues, encoding);
    url += (null == encodedContent) ? "" : ("?" + encodedContent);
  2.  
  3. HttpURLConnection conn = null;
    try {
    conn = (HttpURLConnection) new URL(url).openConnection();
    conn.setRequestMethod("GET");
    conn.setConnectTimeout(100);
    conn.setReadTimeout((int) readTimeoutMs);
    setHeaders(conn, headers, encoding);
  4.  
  5. conn.connect();
    int respCode = conn.getResponseCode(); // 这里内部发送请求
    String resp = null;
  6.  
  7. if (HttpURLConnection.HTTP_OK == respCode) {
    resp = IOUtils.toString(conn.getInputStream(), encoding);
    } else {
    resp = IOUtils.toString(conn.getErrorStream(), encoding);
    }
    return new HttpResult(respCode, resp);
    } finally {
    if (conn != null) {
    conn.disconnect();
    }
    }
    }
  8.  
  9. /**
    * 发送POST请求。
    *
    * @param url
    * @param headers 请求Header,可以为null
    * @param paramValues 参数,可以为null
    * @param encoding URL编码使用的字符集
    * @param readTimeoutMs 响应超时
    * @return
    * @throws IOException
    */
    static public HttpResult httpPost(String url, List<String> headers, List<String> paramValues,
    String encoding, long readTimeoutMs) throws IOException {
    String encodedContent = encodingParams(paramValues, encoding);
  10.  
  11. HttpURLConnection conn = null;
    try {
    conn = (HttpURLConnection) new URL(url).openConnection();
    conn.setRequestMethod("POST");
    conn.setConnectTimeout(3000);
    conn.setReadTimeout((int) readTimeoutMs);
    conn.setDoOutput(true);
    conn.setDoInput(true);
    setHeaders(conn, headers, encoding);
  12.  
  13. conn.getOutputStream().write(encodedContent.getBytes());
  14.  
  15. int respCode = conn.getResponseCode(); // 这里内部发送请求
    String resp = null;
  16.  
  17. if (HttpURLConnection.HTTP_OK == respCode) {
    resp = IOUtils.toString(conn.getInputStream(), encoding);
    } else {
    resp = IOUtils.toString(conn.getErrorStream(), encoding);
    }
    return new HttpResult(respCode, resp);
    } finally {
    if (null != conn) {
    conn.disconnect();
    }
    }
    }
  18.  
  19. static private void setHeaders(HttpURLConnection conn, List<String> headers, String encoding) {
    if (null != headers) {
    for (Iterator<String> iter = headers.iterator(); iter.hasNext();) {
    conn.addRequestProperty(iter.next(), iter.next());
    }
    }
    conn.addRequestProperty("Client-Version", "3.6.8"); // TODO
    conn.addRequestProperty("Content-Type", "application/x-www-form-urlencoded;charset="
    + encoding);
  20.  
  21. //
    String ts = String.valueOf(System.currentTimeMillis());
    String token = MD5.getInstance().getMD5String(ts + ServerHttpAgent.appKey);
  22.  
  23. conn.addRequestProperty(Constants.CLIENT_APPNAME_HEADER, ServerHttpAgent.appName);
    conn.addRequestProperty(Constants.CLIENT_REQUEST_TS_HEADER, ts);
    conn.addRequestProperty(Constants.CLIENT_REQUEST_TOKEN_HEADER, token);
    }
  24.  
  25. static private String encodingParams(List<String> paramValues, String encoding)
    throws UnsupportedEncodingException {
    StringBuilder sb = new StringBuilder();
    if (null == paramValues) {
    return null;
    }
  26.  
  27. for (Iterator<String> iter = paramValues.iterator(); iter.hasNext();) {
    sb.append(iter.next()).append("=");
    sb.append(URLEncoder.encode(iter.next(), encoding));
    if (iter.hasNext()) {
    sb.append("&");
    }
    }
    return sb.toString();
    }
  28.  
  29. static public class HttpResult {
    final public int code;
    final public String content;
  30.  
  31. public HttpResult(int code, String content) {
    this.code = code;
    this.content = content;
    }
    }

HttpSimpleClient连接服务器的更多相关文章

  1. 使用paramiko如何连接服务器?

    本文和大家分享的是python开发中使用paramiko连接服务器的方法和步骤,希望通过本文的,对大家学习和使用paramiko有所帮助. ssh连接步骤 1.ssh server建立server p ...

  2. Mac 使用 SSH 免密连接服务器

    1.生成 SSH 秘钥 ssh-keygen -t rsa  生成的密钥对 id_rsa 和 id_rsa.pub,默认存储在 ~/.ssh 目录,其中没有后缀的是私有,有后缀 .pub 的为公钥.生 ...

  3. telnet命令——连接服务器

    Telnet协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议和主要方式.它为用户提供了在本地计算机上完成远程主机工作的能力.在终端使用者的电脑上使用telnet程序,用它连接 ...

  4. ASP.NET SignalR 与 LayIM2.0 配合轻松实现Web聊天室(二) 之 ChatServer搭建,连接服务器,以及注意事项。

    上篇:ASP.NET SignalR 与 LayIM2.0 配合轻松实现Web聊天室(一) 之 基层数据搭建,让数据活起来(数据获取) 上一篇我们已经完成了初步界面的搭建工作,本篇将介绍IM的核心内容 ...

  5. Linux:ssh连接服务器很慢

    ssh连接服务器,如果很慢,可以进行如下处理: vi /etc/ssh/sshd_config#UseDNS yes改成:UseDNS no/etc/init.d/sshd restart ----- ...

  6. 通过MSSQL连接服务器连接至Oracle数据库

    前言 有很多时候,我们需要MSSQL与Oracle进行跨库查询或数据交互.本篇随笔将阐述如何通过MSSQL的连接服务器连接至Oracle数据库,并且读取数据的示例. 具体步骤 首先需要到Oracle的 ...

  7. SQLSERVER建立MYSQL连接服务器

    1. 在SQL SERVER端安装MYSQL的ODBC驱动 2. 在ODBC数据源添加MYSQL(控制面板\所有控制面板项\管理工具) 在用户DSN 和系统DSN添加配置驱动程序 注:字符集一定要和M ...

  8. Linux下巧用my.cnf,mysql连接服务器不需要输入账号密码信息

    Linux下每次用mysql连接连接服务器,常常用如下方式: [root@localhost ~]# mysql -hlocalhost -uroot -p11111 每次都输入用户名,密码,多折腾人 ...

  9. 【MongoDB】使用mongo连接服务器。。。

    使用mongo连接服务器 命令行: ./mongo 主机号:端口号/数据库名 e.g. ./mongo 127.0.0.1:12345/mongodb1 关闭服务器 use admin db.shut ...

随机推荐

  1. 菜鸟python之路-第五章(记录读书点滴)

    数字 1.数字类型 python支持多种数字类型:整型.长整型.布尔型.双精度浮点型.十进制浮点型和复数 . 创建数值对象并赋值 aint=1 along=-999999999999999L aflo ...

  2. 最近在学习Flask框架,那么就说下jinja2吧~~~

    jinja是组成Flask的模板引擎,先写一个demo吧 {% block body %} <ul> {% for user in users %} <li><a hre ...

  3. vim/network/ssh语法

    一.编辑器——vim vi编辑器是Linux和Unix上最基本的文本编辑器,工作在字符模式下.由于不需要图形界面,vi是效率很高的文本编辑器.尽管在Linux上也有很多图形界面的编辑器可用,但vi在系 ...

  4. html之跳转锚

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. Anagram字符串处理(STL真方便啊。。)

    题意:给出一些字符串,认为各个字符个数相同的字符串就是相同的,不区分大小写,找出这些字符串中不与其他字符串相同的字符串并挨个输出 用char orgin[][]把每个字符串保存起来,然后对每个字符串都 ...

  6. shell 之扫描ip段

    #!/bin/sh domain=`echo $1|awk -F"." '{print $1"."$2"."$3"."} ...

  7. Delphi7 在Windows 7上无法打开Help选项下帮助文档

    发现无法打开Delphi7的帮助文档,百度了一下,问题已经解决. Delphi的帮助文档是*.hlp格式的,而Windows7已经不再带有WinHlp32程序,所以无法再打开此类格式. 此时你需要下载 ...

  8. webpos登录不上

    jo=new JSONObject(((java.sql.Clob)s).getSubString(1, (int) ((java.sql.Clob)s).length()));

  9. easyui-tree-url-param

    远古写法 url后面加参数?param1=1&param2=2 动态添加 onBeforeLoad: function (node, param) { param.param1= 1, par ...

  10. JDBC中执行SQL语句的方式

    一.执行DDL.DML语句 DDL.DML分别表示数据库定义语言.数据库操纵语言,操控这两种语言应该使用Statement对象的executeUpdate方法. 代码如下: public static ...