记:
最近因为对接环信IM开通专业版本之后,服务端(JAVA)对接创建群聊室时报错,代码没有修改过但是一直报错,最后不得不修改成发送http post请求去创建群聊室。
防止以后遇到相同的问题,这里记录一下操作方式
1,发送http post请求,参数必须是Json字符串
import org.apache.http.HttpEntity;
import org.apache.http.HttpStatus;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
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;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Component;
public JSONObject httpPostRequest(String param,String url,String token){
JSONObject jsonObject = new JSONObject();
try (final CloseableHttpClient httpClient = HttpClients.createDefault()) {
final HttpPost httpPost = new HttpPost(url);
JSONObject jsonString = JSON.parseObject(param);
//设置请求体参数
StringEntity entity = new StringEntity(param);
entity.setContentEncoding("utf-8");
httpPost.setEntity(entity);
//设置请求头部
httpPost.setHeader("Content-Type", "application/json");
if(token != null && !"".equals(token)){
httpPost.setHeader("Authorization",token);
}
//执行请求,返回请求响应
try (final CloseableHttpResponse response = httpClient.execute(httpPost)) {
//请求返回状态码
int statusCode = response.getStatusLine().getStatusCode();
//请求成功
if (statusCode == HttpStatus.SC_OK && statusCode <= HttpStatus.SC_TEMPORARY_REDIRECT) {
//取出响应体
final HttpEntity entity2 = response.getEntity();
//从响应体中解析出token
String responseBody = EntityUtils.toString(entity2, "utf-8");
jsonObject = JSONObject.parseObject(responseBody);
//token = jsonObject.getString("access_token");
} else {
//请求失败
throw new ClientProtocolException("请求失败,响应码为:" + statusCode);
}
}
} catch (Exception e) {
e.printStackTrace();
}
return jsonObject;
}