目录
一、分析给出的接口文档
二、请求体格式之间的区别
三、示例代码
一、分析给出的接口文档
一般的接口文档包括以下几大部分:
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 关闭连接,否则当多次异常后可能会出现内存溢出的情况