Commit db646430 by 罗长华

调整ResponseParser parser方法返回JSONObject

parent e08508f7
package com.wecloud.im.sdk.internal; package com.wecloud.im.sdk.internal;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.wecloud.im.sdk.common.ApiResult; import com.wecloud.im.sdk.common.ApiResult;
/** /**
...@@ -8,13 +11,17 @@ import com.wecloud.im.sdk.common.ApiResult; ...@@ -8,13 +11,17 @@ import com.wecloud.im.sdk.common.ApiResult;
* @Date 2022年04月15日 20:40 * @Date 2022年04月15日 20:40
* @Version 1.0 * @Version 1.0
*/ */
public interface ResponseParser<T> { public class ResponseParser {
/** /**
* Converts the result from stream to a java object. * Converts the result from stream to a java object.
* *
* @param jsonResult * @param jsonResult
*/ */
ApiResult<T> parse(String jsonResult); public static JSONObject parse(String jsonResult) {
TypeReference typeRef = new TypeReference<ApiResult<JSONObject>>() {
};
ApiResult<JSONObject> apiResult = (ApiResult<JSONObject>) JSON.parseObject(jsonResult, typeRef);
return apiResult.getData();
}
} }
...@@ -4,7 +4,8 @@ import java.net.URL; ...@@ -4,7 +4,8 @@ import java.net.URL;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import com.wecloud.im.sdk.common.ApiResult; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.wecloud.im.sdk.common.HttpMethod; import com.wecloud.im.sdk.common.HttpMethod;
import com.wecloud.im.sdk.common.RequestMessage; import com.wecloud.im.sdk.common.RequestMessage;
import com.wecloud.im.sdk.model.ImClient; import com.wecloud.im.sdk.model.ImClient;
...@@ -46,8 +47,9 @@ public class WecloudImClientOperation extends WecloudImOperation { ...@@ -46,8 +47,9 @@ public class WecloudImClientOperation extends WecloudImOperation {
RequestMessage request = new WecloudRequestMessageBuilder().setEndpoint("/api/imClient/registerClient") RequestMessage request = new WecloudRequestMessageBuilder().setEndpoint("/api/imClient/registerClient")
.setMethod(HttpMethod.POST).setParameters(param) .setMethod(HttpMethod.POST).setParameters(param)
.setOriginalRequest(registerClientRequest).build(); .setOriginalRequest(registerClientRequest).build();
ApiResult<ImClient> result = doOperation(request, null);
return result.getData(); JSONObject result = doOperation(request);
ImClient imClient = JSON.parseObject(result.toJSONString(), ImClient.class);
return imClient;
} }
} }
...@@ -10,7 +10,7 @@ import java.util.Map; ...@@ -10,7 +10,7 @@ import java.util.Map;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import com.wecloud.im.sdk.common.ApiResult; import com.alibaba.fastjson.JSONObject;
import com.wecloud.im.sdk.common.HttpClient; import com.wecloud.im.sdk.common.HttpClient;
import com.wecloud.im.sdk.common.HttpMethod; import com.wecloud.im.sdk.common.HttpMethod;
import com.wecloud.im.sdk.common.RequestMessage; import com.wecloud.im.sdk.common.RequestMessage;
...@@ -39,13 +39,22 @@ public abstract class WecloudImOperation { ...@@ -39,13 +39,22 @@ public abstract class WecloudImOperation {
this.appSecret = appSecret; this.appSecret = appSecret;
} }
protected <T> ApiResult<T> doOperation(RequestMessage request, ResponseParser<T> responseParser) { protected JSONObject doOperation(RequestMessage request) {
ApiResult<T> result = send(request, responseParser); Credentials credentials = new Credentials(appKey, appSecret);
return result; // 请求日期
String date = DateUtil.formatHttpDate(new Date());
request.addHeader(ImHeaders.DATE, date);
if (HttpMethod.POST.equals(request.getMethod())) {
request.addHeader(CONTENT_TYPE, "application/json; charset=utf-8");
}
// 添加签名请求头
RequestSigner signer = new RequestSigner(request.getMethod().name(), request.getEndpoint(), credentials);
signer.sign(request);
return send(request);
} }
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
private <T> ApiResult<T> send(RequestMessage request, ResponseParser<T> responseParser) { private JSONObject send(RequestMessage request) {
try { try {
// 组装请求 // 组装请求
Map<String, Object> parameters = BeanUtil.beanToMap(request.getOriginalRequest(), false, true); Map<String, Object> parameters = BeanUtil.beanToMap(request.getOriginalRequest(), false, true);
...@@ -53,15 +62,6 @@ public abstract class WecloudImOperation { ...@@ -53,15 +62,6 @@ public abstract class WecloudImOperation {
parameters.forEach((k, v) -> { parameters.forEach((k, v) -> {
finalParameters.put(k, v.toString()); finalParameters.put(k, v.toString());
}); });
Credentials credentials = new Credentials(appKey, appSecret);
// 请求日期
String date = DateUtil.formatHttpDate(new Date());
request.addHeader(ImHeaders.DATE, date);
request.addHeader(CONTENT_TYPE, "application/json; charset=utf-8");
// 添加签名请求头
RequestSigner signer = new RequestSigner(request.getMethod().name(), request.getEndpoint(), credentials);
signer.sign(request);
URL endpoint = new URL(apiDomain, request.getEndpoint()); URL endpoint = new URL(apiDomain, request.getEndpoint());
HttpClient httpClient = HttpClient httpClient =
HttpClient.builder().url(endpoint).addHeaders(request.getHeaders()).addParams(request.getParameters()).addParams(finalParameters); HttpClient.builder().url(endpoint).addHeaders(request.getHeaders()).addParams(request.getParameters()).addParams(finalParameters);
...@@ -79,7 +79,7 @@ public abstract class WecloudImOperation { ...@@ -79,7 +79,7 @@ public abstract class WecloudImOperation {
assert response.body() != null; assert response.body() != null;
String responseBody = response.body().string(); String responseBody = response.body().string();
return responseParser.parse(responseBody); return ResponseParser.parse(responseBody);
} catch (Exception e) { } catch (Exception e) {
throw new WecloudException("发送请求报错: " + e.getMessage()); throw new WecloudException("发送请求报错: " + e.getMessage());
......
...@@ -30,9 +30,4 @@ public class RegisterClientRequest extends WebServiceRequest { ...@@ -30,9 +30,4 @@ public class RegisterClientRequest extends WebServiceRequest {
*/ */
private String nickname; private String nickname;
/**
* 设备类型
*/
private Integer deviceType;
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment