HttpClient网络连接

  HttpClient 是Apache使用HttpUrlConnection封装的类,用于向服务器传送数据和接收服务器的数据。使用HttpClient 也分两种传送数据的方法,一种是Get方法,一种是Post方法。

doGet方法:

  1. 导入jar包。
    HttpClient 是Apache使用HttpUrlConnection封装的类,因此需要导入其jar包。在官网就可以下载。下载地址
    HttpClient网络连接_第1张图片

  2. 创建HttpClient类实例。
    通过创建HttpClientBuilder类实例, 然后创建HttpClient类实例。

  3. 设置get方法。
    urlString为解析的服务器的地址,加传送的数据的内容。
    HttpGet get = new HttpGet(urlString);
    get.setHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  4. 执行get方法。
    通过执行get方法, 将获得返回的所有语句存储在Response对象中。
  5. 获得服务器返回的表头
  6. 获得状态码。
  7. 获得数据的实体。
  8. 获得数据的输入流。
    通过getContent获得数据的输入流。从而获得数据

完整的代码:

    String urlString  = "http://localhost:8080/MyServerletTest/MyServerletTest?username=zhangsan&password=123456";
    //创建HttpClient对象
    HttpClientBuilder builder = HttpClientBuilder.create();
    //HttpClient
    HttpClient client = builder.build();
    //设置get方法。
    HttpGet get = new HttpGet(urlString);
    get.setHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");  
    try {
        //执行get方法获得服务器返回的所有数据
        HttpResponse response = client.execute(get);
        //HttpClient获得服务器返回的表头。
        StatusLine statusLine = response.getStatusLine();

        //获得状态码
        int code = statusLine.getStatusCode();
        if(code==HttpURLConnection.HTTP_OK){
            //得到数据的实体。
            HttpEntity entity = response.getEntity();

            //得到数据的输入流。
            InputStream is = entity.getContent();
            BufferedReader br = new BufferedReader(new InputStreamReader(is));
            String line = br.readLine();
            while(line!=null){
                System.out.println(line);
                line = br.readLine();
            }                   
        }
    } catch (ClientProtocolException e1) {
        e1.printStackTrace();
    } catch (IOException e1) {
        e1.printStackTrace();
    }

doPost方法:

  1. 导入jar包。
    HttpClient 是Apache使用HttpUrlConnection封装的类,因此需要导入其jar包。在官网就可以下载。下载地址
    HttpClient网络连接_第2张图片

  2. 创建HttpClient类实例。
    通过创建HttpClientBuilder类实例, 然后创建HttpClient类实例。

  3. 设置传递的数据。
    (1)创建NameValuePair 类对象,通过BasicNameValuePair类来进行创建。
    (2)创建ArrayList存储数据参数。
    (3)将参数添加进ArrayList中。
  4. 设置Post方法。
    HttpPost post = new HttpPost(urlString);
    设置传入的参数格式
    post.setEntity(new UrlEncodedFormEntity(params, “UTF-8”));
    post.setHeader(“Content-Type”, “application/x-www-form-urlencoded; charset=UTF-8”);
  5. 执行post方法
    通过执行post方法, 将获得返回的所有语句存储在Response对象中。
  6. 获得服务器返回的表头
  7. 获得状态码。
  8. 获得数据的实体。
  9. 获得数据的输入流。
    通过getContent获得数据的输入流。从而获得数据

完整的代码:

    String urlString  = "http://localhost:8080/MyServerletTest/MyServerletTest";
    //创建HttpClient对象
    HttpClientBuilder builder = HttpClientBuilder.create();
    //HttpClient
    HttpClient client = builder.build();        

    //设置传入的数据
    NameValuePair pair1 = new BasicNameValuePair("username", "张三");
    NameValuePair pair2 = new BasicNameValuePair("password", "123456");
    ArrayList<NameValuePair> params = new ArrayList<>();
    params.add(pair1);
    params.add(pair2);

    try {
        //设置Post方法
        HttpPost post = new HttpPost(urlString);
        //设置传递的参数格式
        post.setEntity(new UrlEncodedFormEntity(params, "UTF-8"));
        post.setHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");

        //执行get方法获得服务器返回的所有数据
        HttpResponse response = client.execute(post);
        //HttpClient获得服务器返回的表头。
        StatusLine statusLine = response.getStatusLine();

        //获得状态码
        int code = statusLine.getStatusCode();
        if(code==HttpURLConnection.HTTP_OK){
            //得到数据的实体。
            HttpEntity entity = response.getEntity();

            //得到数据的输入流。
            InputStream is = entity.getContent();
            BufferedReader br = new BufferedReader(new InputStreamReader(is));
            String line = br.readLine();
            while(line!=null){
                System.out.println(line);
                line = br.readLine();
            }
        }
    } catch (UnsupportedEncodingException e2) {
        e2.printStackTrace();
    } catch (UnsupportedOperationException e1) {
        e1.printStackTrace();
    } catch (IOException e1) {
        e1.printStackTrace();
    }

你可能感兴趣的:(httpclient,set和get)