调用第三方接口

目录

一、分析给出的接口文档

二、请求体格式之间的区别

三、示例代码


一、分析给出的接口文档

一般的接口文档包括以下几大部分:

1、请求URL:http://{ip}:{port}/api/ec/dev/message/sendCustomMessageSingle

2、请求方式:POST、GET等

3、请求头:请求头里面携带一些接口需要的参数,例如 Toekn 等

4、请求体:请求体的格式有 Json、XML等

如下有一个简单的请求示例代码

二、请求体格式之间的区别

如图所示,常见的请求体的格式有以下几种:

form-data :用于上传文件或提交表单,特别是当表单中包含文件时。常见于需要同时上传文本数据和二进制文件的情况。

urlencoded:用于普通的表单提交,其中表单数据被编码为键值对,并且这些键值对用URL编码(如key1=value1&key2=value2)。是HTML表单默认的编码方式之一。

binary:通常指的是原始的二进制数据,没有特定的格式。用于传输纯二进制数据,如图片、视频或其他文件。

msgpack :MsgPack是一种高效的二进制序列化格式,类似于JSON但更紧凑,适用于网络传输。适合于性能敏感的应用程序,因为它减少了传输的数据量。

Json:{"":""}

XML等

三、示例代码

public static String doPost(String url,String userName,String pwd,String xml){
	// 创建Httpclient对象
	CloseableHttpClient httpClient = HttpClients.createDefault();
    CloseableHttpResponse response = null;
    String resultString = "";
    try {
        // 创建Http Post请求
        HttpPost httpPost = new HttpPost(url);
        // 创建请求内容
        httpPost.setHeader("HTTP Method", "POST");
        httpPost.setHeader("Connection", "Keep-Alive");
        httpPost.setHeader("Content-Type", "text/xml; charset=UTF-8");
        httpPost.setHeader("Authorization", getHeader(userName, pwd));
        httpPost.setHeader("Username",userName);
        httpPost.setHeader("Password",pwd);
        
        StringEntity entity = new StringEntity(xml, "UTF-8");
        entity.setContentType("text/xml;charset=UTF-8");
        httpPost.setEntity(entity);
        // 执行http请求
        response = httpClient.execute(httpPost);
        if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
            resultString = EntityUtils.toString(response.getEntity(), "UTF-8");
        } else {
            String tmp = EntityUtils.toString(response.getEntity(), "UTF-8");
            throw new RuntimeException(tmp);
        }
    } catch (Exception e) {
        throw new RuntimeException(e);
    } finally {
        try {
            if(response!=null){
                response.close();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        if(httpClient!=null){
            try{
                httpClient.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
    	}  	            
    }
    return resultString;
}
 
private static String getHeader(String userName,String pwd) {
    String auth = userName + ":" + pwd;
    byte[] encodedAuth = Base64.encodeBase64(auth.getBytes(Charset.forName("US-ASCII")));
    String authHeader = "Basic " + new String(encodedAuth);
    return authHeader;
}

此段代码 Post 请求通用,需要注意的是创建完 Http 请求后需要使用 finally 关闭连接,否则当多次异常后可能会出现内存溢出的情况

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值