zoukankan      html  css  js  c++  java
  • http, get, post, HttpClient

    http://www.blogjava.net/willpower88/archive/2008/04/14/192720.html

    http://www.blogjava.net/willpower88/archive/2008/04/14/192679.html

    http://lavasoft.blog.51cto.com/62575/168276/

    玩法一:纯java,发送http get/post 请求,how?

    客户端:发送请求

    给个url,从url里获取connection出来,在connection上为所欲为,进行各种参数的设置(例如Keep-Alive, Content-Type, useCaches, doOutput等)。设置完后,该往连接上写东西了,我的outputstreamwriter已经蓄势待发,往哪里写呢?connection给你个口子。写完后,osw关掉,连接也关掉。

    服务器端:接收请求

    request里获取数据即可。

    整个逻辑就是这么简单。

    玩法二:HttpClient,开源项目,化了个妆,看着更舒心

    变出一个client,给它设置目标服务器地址与端口。

    变出一个方法(get/post)。

    客户端执行方法。

    方法会返回 服务器状态,及服务器返回信息,当然方法还要负责释放连接。注意,是方法完成的,不是client,client只负责“管理”方法,具体执行还是方法自己来。

    需要提一下下:

    1) get(读)总是那么简单,给?xx&xx这样的参数即可,post(删查改)需要NameValuePair这样的方式把参数设置进来。

    2) 需要简单的userName/password验证也没关系,直接当post参数一并传过去好了;

    3) 需要直接传xml文件也没关系,同2)

    4) 多线程环境 下使用,需要给client来一个多线程的大管家MultiThreadedHttpConnectionManager

     

    one little demo:

        public static void main(String[] args) throws HttpException, IOException {
            testHttp(0);
            testHttp(1);
        }
        
        /**
         * type=0, get
         * type=1, post
         * http://haoma.imobile.com.cn/index.php?mob=18858111994
         */
        public static void testHttp(int type) throws HttpException, IOException{
            HttpClient client = new HttpClient();
            client.getHostConfiguration().setHost("haoma.imobile.com.cn", 80, "http");
            HttpMethod method = null;
            switch(type){
            case 0:
                method = getGetMethod();
                break;
            case 1:
                method = getPostMethod();
                break;
            }
            
            client.executeMethod(method);
            System.out.println("statusLine = " + method.getStatusLine());
    
            String response = new String(method.getResponseBodyAsString());
            System.out.println("response = " + response);
            
            method.releaseConnection();
        }
    
        private static HttpMethod getGetMethod() {
            return new GetMethod("/index.php?mob=18858111994");
        }
    
        private static HttpMethod getPostMethod() {
            PostMethod post = new PostMethod("/index.php");
            NameValuePair simcard = new NameValuePair("mob", "18858111994");
            post.setRequestBody(new NameValuePair[] { simcard });
            return post;
        }

     

  • 相关阅读:
    [LeetCode#260]Single Number III
    1 sql server中添加链接服务器
    1 sql server 中cursor的简介
    1 .net将xml反序列化
    1 C# 将对象序列化
    1 SQL SERVER 实现字符串分割成table的方法
    1 asp.net 中如何把用户控件应用于母版页
    1 .net中自定义事件的步骤
    .NET中跨线程访问winform控件的方法
    1 sql server 中merge的用法
  • 原文地址:https://www.cnblogs.com/alipayhutu/p/2369242.html
Copyright © 2011-2022 走看看