敲代码的兔子

导航

HttpClient发送GET、POST、SOAP请求

package com.dahai.httpclientTest;

import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;

import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;

public class HttpClientTest {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        CloseableHttpClient clientGet = HttpClients.createDefault();
        CloseableHttpClient clientPost = HttpClients.createDefault();
        CloseableHttpClient clientSoap = HttpClients.createDefault();
        /**********第一种创建GET请求的方法:************/
        HttpGet httpGet1 = new HttpGet("http://localhost:8080/mobilePhone?model=iPhone+6S");
        /**********第二种创建GET请求的方法:************/
        //1.通过URIBuilder()创建一个uri,setScheme设置协议,setHost设置IP,setPort设置端口号,
        //setPath设置路径,setParameter设置参数,build()进行构建
        URI uri = null;
        try {
            uri = new URIBuilder().setScheme("http").setHost("localhost").setPort(8080)
                    .setPath("/mobilePhone").setParameter("model","iPhone 6S").build();
        } catch (URISyntaxException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        //2.创建GET请求
        HttpGet httpGet2 = new HttpGet(uri);
        /***************创建POST请求*****************/
        //1.设置POST的uri
        HttpPost httpPost = new HttpPost("http://localhost:8080/mobilePhone");
        //2.创建一个JSON串,并为请求设置请求体格式
        StringEntity stringEntityPost = new StringEntity("{\"brand\":\"Motorola\",\"model\":\"moto Z Play\",\"os\":\"ANDROID\"}",ContentType.APPLICATION_JSON);        
        //3.将JSON串填入POST请求
        httpPost.setEntity(stringEntityPost);
        /***************创建SOAP请求*****************/
        //1.设置SOAP的uri
        HttpPost httpSoap = new HttpPost("http://localhost:8080/MobilePhones");
        //2.创建一个XML串
        String soapString ="<SOAP-ENV:Envelope "
                +     "xmlns:SOAP-ENV=\"http://schemas.xmlsoap.org/soap/envelope/\" "
                +     "xmlns:hi=\"http://www.lujiatao.com/httpinterface/MobilePhones\">"
                +     "        <SOAP-ENV:Header/>\r\n"
                +     "        <SOAP-ENV:Body>\r\n"
                +     "            <hi:getMobilePhoneRequest>\r\n"
                +     "                <hi:model>iPhone 6S</hi:model>\r\n"
                +     "            </hi:getMobilePhoneRequest>\r\n"
                +     "        </SOAP-ENV:Body>\r\n"
                + "</SOAP-ENV:Envelope>";
        //3.为请求设置请求体格式
        StringEntity stringEntitySoap = new StringEntity(soapString,ContentType.TEXT_XML);
        //4.将XML串填入SOAP请求
        httpSoap.setEntity(stringEntitySoap);
        /*******************创建一个响应******************/
        CloseableHttpResponse responseGet1 = null ;
        CloseableHttpResponse responseGet2 = null ;
        CloseableHttpResponse responsePost = null ;
        CloseableHttpResponse responseSoap = null ;
        /*******************发送请求并获得响应(execute:执行)******************/
        try {
            responseGet1 = clientGet.execute(httpGet1);
            responseGet2 = clientGet.execute(httpGet2);
            responsePost = clientPost.execute(httpPost);
            responseSoap = clientSoap.execute(httpSoap);
        /*******************打印响应报文(getEntity:生成应答报文,EntityUtils.toString:)******************/
            System.out.println(EntityUtils.toString(responseGet1.getEntity()));
            System.out.println(EntityUtils.toString(responseGet2.getEntity()));
            System.out.println(EntityUtils.toString(responsePost.getEntity()));
            System.out.println(EntityUtils.toString(responseSoap.getEntity()));
        } catch (ClientProtocolException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

 

posted on 2021-01-24 19:41  敲代码的兔子  阅读(474)  评论(0编辑  收藏  举报