目录
一、分析给出的接口文档
一般的接口文档包括以下几大部分:
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 关闭连接,否则当多次异常后可能会出现内存溢出的情况