• HttpClient


    HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性,它不仅使客户端发送Http请求变得容易,而且也方便开发人员测试接口(基于Http协议的),提高了开发的效率,也方便提高代码的健壮性。

    使用方法

    使用HttpClient发送请求、接收响应

    1. 创建HttpClient对象。

    2. 创建请求方法的实例,并指定请求URL。如果需要发送GET请求,创建HttpGet对象;如果需要发送POST请求,创建HttpPost对象。

    3. 如果需要发送请求参数,可调用HttpGet、HttpPost共同的setParams(HttpParams params)方法来添加请求参数;对于HttpPost对象而言,也可调用setEntity(HttpEntity entity)方法来设置请求参数。

    4. 调用HttpClient对象的execute(HttpUriRequest request)发送请求,该方法返回一个HttpResponse。

    5. 调用HttpResponse的getAllHeaders()、getHeaders(String name)等方法可获取服务器的响应头;调用HttpResponse的getEntity()方法可获取HttpEntity对象,该对象包装了服务器的响应内容。程序可通过该对象获取服务器的响应内容。

    6. 释放连接。无论执行方法是否成功,都必须释放连接

    post请求1

    package a;  
       
    import java.io.FileInputStream;  
    import java.io.IOException;  
    import java.util.ArrayList;  
    import java.util.List;  
    import java.util.Properties;  
       
    import org.apache.http.HttpEntity;  
    import org.apache.http.HttpResponse;  
    import org.apache.http.NameValuePair;  
    import org.apache.http.client.HttpClient;  
    import org.apache.http.client.config.RequestConfig;  
    import org.apache.http.client.entity.UrlEncodedFormEntity;  
    import org.apache.http.client.methods.HttpPost;  
    import org.apache.http.impl.client.DefaultHttpClient;  
    import org.apache.http.message.BasicNameValuePair;  
    import org.apache.http.util.EntityUtils;  
       
    public class First {  
        public static void main(String[] args) throws Exception{  
            List<NameValuePair> formparams = new ArrayList<NameValuePair>();  
            formparams.add(new BasicNameValuePair("account", ""));  
            formparams.add(new BasicNameValuePair("password", ""));  
            HttpEntity reqEntity = new UrlEncodedFormEntity(formparams, "utf-8");  
        
            RequestConfig requestConfig = RequestConfig.custom()  
            .setConnectTimeout(5000)//一、连接超时:connectionTimeout-->指的是连接一个url的连接等待时间  
                    .setSocketTimeout(5000)// 二、读取数据超时:SocketTimeout-->指的是连接上一个url,获取response的返回等待时间  
                    .setConnectionRequestTimeout(5000)  
                    .build();  
        
            HttpClient client = new DefaultHttpClient();  
            HttpPost post = new HttpPost("http://cnivi.com.cn/login");  
            post.setEntity(reqEntity);  
            post.setConfig(requestConfig);  
            HttpResponse response = client.execute(post);  
        
            if (response.getStatusLine().getStatusCode() == 200) {  
                HttpEntity resEntity = response.getEntity();  
                String message = EntityUtils.toString(resEntity, "utf-8");  
                System.out.println(message);  
            } else {  
                System.out.println("请求失败");  
            }  
        }  
       
    } 
    

      其他代码见 https://blog.csdn.net/w372426096/article/details/82713315

    post请求2

    /** 
      * post方式提交表单(模拟用户登录请求) 
      */   
     public void postForm() {   
           
        String url = "http://localhost:8080/Java_WS_Server/rest/surpolicy/sendXml"; 
           
         // 创建默认的httpClient实例.     
        HttpClient client = new DefaultHttpClient(); 
         // 创建httppost     
         HttpPost httppost = new HttpPost(url);   
         // 创建参数队列     
         List<NameValuePair> formparams = new ArrayList<NameValuePair>();   
         formparams.add(new BasicNameValuePair("username", "admin"));   
         formparams.add(new BasicNameValuePair("password", "123456"));   
         UrlEncodedFormEntity uefEntity;   
         try {   
             uefEntity = new UrlEncodedFormEntity(formparams, "UTF-8"); //编码  
             httppost.setEntity(uefEntity);   
             System.out.println("executing request " + httppost.getURI());   
             HttpResponse response = client.execute(httppost);   
    Header[] headers = response.getAllHeaders(); 
    for(int i=0; i<headers.length; i++){ 
        System.out.println(headers[i].getName()); 
    } 
       
             try {   
                 HttpEntity entity = response.getEntity();   
                 if (entity != null) {   
                     System.out.println("--------------------------------------");   
                     System.out.println("Response content: " + EntityUtils.toString(entity, "UTF-8"));  //编码 
                     System.out.println("--------------------------------------");   
                 }   
             } finally {   
       
             }   
         } catch (ClientProtocolException e) {   
             e.printStackTrace();   
         } catch (UnsupportedEncodingException e1) {   
             e1.printStackTrace();   
         } catch (IOException e) {   
             e.printStackTrace();   
         } finally {   
       
         }   
     }

    get请求

    /** 
     * 发送 get请求 
     */   
    public void get() {   
        try {   
            HttpClient client = new DefaultHttpClient(); 
            // 创建httpget.     
            HttpGet httpget = new HttpGet("http://www.baidu.com/");   
            System.out.println("executing request " + httpget.getURI());   
            // 执行get请求.     
            HttpResponse response = client.execute(httpget);   
            try {   
                // 获取响应实体     
                HttpEntity entity = response.getEntity();   
                System.out.println("--------------------------------------");   
                // 打印响应状态     
                System.out.println(response.getStatusLine());   
                if (entity != null) {   
                    // 打印响应内容长度     
                    System.out.println("Response content length: " + entity.getContentLength());   
                    // 打印响应内容     
                    System.out.println("Response content: " + EntityUtils.toString(entity));   
                }   
                System.out.println("------------------------------------");   
            } finally {   
            }   
        } catch (ClientProtocolException e) {   
            e.printStackTrace();   
        }  catch (IOException e) {   
            e.printStackTrace();   
        } finally {}   
    }
    

      

      

  • 相关阅读:
    Asp.Net Core- 配置组件详解
    ASP.Net Core-依赖注入IoC
    ASP.Net Core-TagHelpers
    Selenium-等待
    Selenium-js
    Selenium-actions
    Selenium-基础操作
    Selenium-简介
    装饰者模式
    设计模式-策略者模式
  • 原文地址:https://www.cnblogs.com/lingcheng7777/p/11319208.html
Copyright © 2020-2023  润新知