自动化测试---接口测试

package httpclient.httpclient;
 
import java.io.IOException;
import org.apache.http.Header;
import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.util.EntityUtils;
 
public class HttpClientUtil {
    public void testPost() {
        //1.创建客户端访问服务器的httpclient对象
        CloseableHttpClient httpClient = HttpClientBuilder.create().build();
        //2.定义请求的url
        String url = "https://XXX.XXX.com/NC1000001";
        //3.以请求的连接地址创建get/post请求对象
        HttpPost post = new HttpPost(url);
        //如果有header请求,添加header请求
        post.addHeader("x-api-key", "XXX");
        post.addHeader("x-lang", "en-US");
        try {
            //4.向服务器发送请求,并获取返回数据
            CloseableHttpResponse response = httpClient.execute(post);
            //获取返回的所有headers
            Header[] headers = response.getAllHeaders();
            for (Header header : headers) {
                System.out.println(header);
            }
            //获取返回的状态
            int status = response.getStatusLine().getStatusCode();
            System.out.println(status);
            //获取HttpEntity消息载体对象
            HttpEntity entity = response.getEntity();
            // EntityUtils中的toString()方法转换服务器的响应数据
            String str = EntityUtils.toString(entity, "utf-8");
            System.out.println("服务器的响应是:" + str);
            //5.关闭连接
            httpClient.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
 
    public static void main(String[] args) {
        HttpClientUtil util = new HttpClientUtil();
        util.testPost();
    }
}

 httpClientRequest

package modeHttp;

import java.util.HashMap;
import java.util.Map;

public class HttpClientRequest
{
    private String url;
        
    private Map<String,String>  headers = new HashMap<String,String>();
    
    private String body;

    public String getUrl()
    {
        return url;
    }

    public void setUrl(String url)
    {
        this.url = url;
    }

    public Map<String, String> getHeaders()
    {
        return headers;
    }

    public void setHeaders(Map<String, String> headers)
    {
        this.headers = headers;
    }

    public String getBody()
    {
        return body;
    }

    public void setBody(String body)
    {
        this.body = body;
    }
    
}

HttpClientRespon

package modeHttp;

import java.util.HashMap;
import java.util.Map;

public class HttpClientResponse
{
    private String  statusCode;
    
    private Map<String,String> header = new HashMap<String,String>();
    
    private String body;

    public String getStatusCode()
    {
        return statusCode;
    }

    public void setStatusCode(String statusCode)
    {
        this.statusCode = statusCode;
    }

    public Map<String, String> getHeader()
    {
        return header;
    }

    public void setHeader(Map<String, String> header)
    {
        this.header = header;
    }

    public String getBody()
    {
        return body;
    }

    public void setBody(String body)
    {
        this.body = body;
    }
    
    
}

HttpHelper

package Utils;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import modeHttp.HttpClientResponse;

import org.apache.http.Header;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpEntityEnclosingRequestBase;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpRequestBase;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.testng.log4testng.Logger;

import Http.HttpClientRequest;

public class HttpHelper
{
    HttpClientRequest httpClientRequest;
    CloseableHttpClient httpClient ;
    
    public CloseableHttpClient getHttpClient()
    {
        return httpClient;
    }
    public void setHttpClient(CloseableHttpClient httpClient)
    {
        this.httpClient = httpClient;
    }

    private static Logger logger = Logger.getLogger(HttpHelper.class);
    
    /*
     * 获取链接
     */
    public void init()
    {
        httpClient = HttpClientBuilder.create().build();
    }
    /*
     * 关闭链接
     */
    public void close()
    {
        try
        {
            httpClient.close();
        } catch (IOException e)
        {
            logger.error("");
            logger.error(e.getMessage());
        }
    }
    
    /*
     * 调用接口
     */
    public HttpClientResponse sendrequest(HttpClientRequest httpClientRequest,HttpRequestBase httpRequestBase)
    {
        String url = httpClientRequest.getUrl();
        CloseableHttpResponse response = null;
        String  encodingofBody = "ISO-8859-1";
        HttpClientResponse httpClientResponse = null;
        
        Map<String,String> headers = httpClientRequest.getHeaders();
        //设置header,包含Conent-Type
        for(String header:headers.keySet())
        {
            httpRequestBase.setHeader(header, headers.get(header));
            //获取编码方式
            if(header.toLowerCase().equals("Conent-Type"))
            {
                if(headers.get(header).split(";").length >= 2)
                {
                    encodingofBody = headers.get(header).split(";")[1].split("=")[1];
                }
            }
        }
        //判定是否有方法是否有body,再设置body
        if(httpRequestBase instanceof HttpEntityEnclosingRequestBase)
        {
            ((HttpEntityEnclosingRequestBase) httpRequestBase).setEntity(new StringEntity(httpClientRequest.getBody(),encodingofBody));
        }
        
        try
        {
            response = httpClient.execute(httpRequestBase);
            
        } catch (ClientProtocolException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
        httpClientResponse.setBody(response.getEntity().toString());
        
        Header[] headerResponses =  response.getAllHeaders();
        Map<String,String> headerResponseMap = new HashMap<String,String>();
        for(Header headerResponse:headerResponses)
        {
            headerResponseMap.put(headerResponse.getName(),headerResponse.getValue());
        }
        
        httpClientResponse.setHeader(headerResponseMap);
        
        httpClientResponse.setStatusCode(String.valueOf(response.getStatusLine().getStatusCode()));
        
        return httpClientResponse;
    }
    
    public HttpClientResponse doGet(HttpClientRequest httpClientRequest)
    {
        HttpHelper helper = new HttpHelper();
        HttpClientResponse httpClientResponse;
        helper.init();
        String url = httpClientRequest.getUrl();
        HttpGet get = new HttpGet(url);
        httpClientResponse = helper.sendrequest(httpClientRequest, get);
        helper.close();
        return httpClientResponse;
    }
    
    public String fromeUrl(String url,Map<String,String> params)
    {
        String result;
        StringBuffer urlTest = new StringBuffer(url);
        
        urlTest.append("?");
        
        for(String param:params.keySet())
        {
            urlTest.append(param).append("=").append(params.get(param)).append("&");
        }
        
        return result = urlTest.toString().substring(0,urlTest.length()-1);
    }
}

 

posted on 2017-11-19 23:25  彩屏黑白  阅读(139)  评论(0编辑  收藏  举报

导航