diff --git a/maxkey-core/src/main/java/org/maxkey/constants/ContentType.java b/maxkey-core/src/main/java/org/maxkey/constants/ContentType.java index 72c31cb5b..ba76b2c51 100644 --- a/maxkey-core/src/main/java/org/maxkey/constants/ContentType.java +++ b/maxkey-core/src/main/java/org/maxkey/constants/ContentType.java @@ -39,6 +39,8 @@ public class ContentType { public static final String APPLICATION_XML_UTF8 = "application/xml;charset=UTF-8"; + public static final String APPLICATION_FORM = "application/x-www-form-urlencoded"; + public static final String IMAGE_GIF = "image/gif"; public static final String IMAGE_JPEG = "image/jpeg"; diff --git a/maxkey-core/src/main/java/org/maxkey/web/HttpRequestAdapter.java b/maxkey-core/src/main/java/org/maxkey/web/HttpRequestAdapter.java index 31bf75f81..4bbe84687 100644 --- a/maxkey-core/src/main/java/org/maxkey/web/HttpRequestAdapter.java +++ b/maxkey-core/src/main/java/org/maxkey/web/HttpRequestAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright [2021] [MaxKey of copyright http://www.maxkey.top] + * Copyright [2022] [MaxKey of copyright http://www.maxkey.top] * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -31,13 +31,18 @@ import org.apache.http.NameValuePair; import org.apache.http.client.config.RequestConfig; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpDelete; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; +import org.apache.http.client.methods.HttpPut; +import org.apache.http.client.methods.HttpRequestBase; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.message.BasicNameValuePair; import org.apache.http.util.EntityUtils; +import org.maxkey.constants.ContentType; +import org.maxkey.util.AuthorizationHeaderUtils; import org.maxkey.util.JsonUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -47,13 +52,9 @@ import org.springframework.stereotype.Component; public class HttpRequestAdapter { private static final Logger _logger = LoggerFactory.getLogger(HttpRequestAdapter.class); - private String mediaType = MediaType.FORM; + private String mediaType = ContentType.APPLICATION_FORM; - public static class MediaType{ - public static String JSON = "JSON"; - public static String XML = "XML"; - public static String FORM = "FORM"; - } + HashMap headers = new HashMap(); public HttpRequestAdapter(){} @@ -62,71 +63,62 @@ public class HttpRequestAdapter { } public String post(String url,Map parameterMap) { - HashMap headers = new HashMap(); - headers.put("Content-Type", "application/x-www-form-urlencoded"); + setContentType(ContentType.APPLICATION_FORM); return post(url , parameterMap , headers); } + public HttpRequestAdapter addHeaderAuthorizationBearer(String token ) { + headers.put("Authorization", AuthorizationHeaderUtils.createBearer(token)); + return this; + } + + public HttpRequestAdapter addHeaderAuthorizationBasic(String username, String password) { + headers.put("Authorization", AuthorizationHeaderUtils.createBasic(username,password)); + return this; + } + + public HttpRequestAdapter setContentType(String contentType) { + headers.put("Content-Type", contentType); + return this; + } + + public HttpRequestAdapter addHeader(String name , String value ) { + headers.put(name, value); + return this; + } + public String post(String url,Map parameterMap,HashMap headers) { // 创建httpClient实例 CloseableHttpClient httpClient = HttpClients.createDefault(); CloseableHttpResponse httpResponse = null; // 创建httpPost远程连接实例 - HttpPost httpPost = new HttpPost(url); + HttpPost httpMethod = new HttpPost(url); // 配置请求参数实例 - RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(35000)// 设置连接主机服务超时时间 - .setConnectionRequestTimeout(35000)// 设置连接请求超时时间 - .setSocketTimeout(60000)// 设置读取数据连接超时时间 - .build(); - // 为httpPost实例设置配置 - httpPost.setConfig(requestConfig); + setRequestConfig(httpMethod); // 设置请求头 - if (null != headers && headers.size() > 0) { - Set> entrySet = headers.entrySet(); - // 循环遍历,获取迭代器 - Iterator> iterator = entrySet.iterator(); - while (iterator.hasNext()) { - Entry mapEntry = iterator.next(); - _logger.trace("Name " + mapEntry.getKey() + " , Value " +mapEntry.getValue()); - httpPost.addHeader(mapEntry.getKey(), mapEntry.getValue()); - } - } + buildHeader(httpMethod,headers); // 封装post请求参数 if (null != parameterMap && parameterMap.size() > 0) { - if(mediaType.equals(MediaType.FORM)) { - List nvps = new ArrayList(); - // 通过map集成entrySet方法获取entity - Set> entrySet = parameterMap.entrySet(); - // 循环遍历,获取迭代器 - Iterator> iterator = entrySet.iterator(); - while (iterator.hasNext()) { - Entry mapEntry = iterator.next(); - _logger.debug("Name " + mapEntry.getKey() + " , Value " +mapEntry.getValue()); - nvps.add(new BasicNameValuePair(mapEntry.getKey(), mapEntry.getValue().toString())); - } - + if(mediaType.equals(ContentType.APPLICATION_FORM)) { // 为httpPost设置封装好的请求参数 try { - httpPost.setEntity(new UrlEncodedFormEntity(nvps, "UTF-8")); + httpMethod.setEntity(buildFormEntity(parameterMap)); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } - }else if(mediaType.equals(MediaType.JSON)) { + }else if(mediaType.equals(ContentType.APPLICATION_JSON)) { String jsonString = JsonUtils.gson2Json(parameterMap); StringEntity stringEntity =new StringEntity(jsonString, "UTF-8"); - stringEntity.setContentType("text/json"); - httpPost.setEntity(stringEntity); - - + stringEntity.setContentType(ContentType.APPLICATION_JSON); + httpMethod.setEntity(stringEntity); } - _logger.debug("Post Message \n{} ", httpPost.getEntity().toString()); + _logger.debug("Post Message \n{} ", httpMethod.getEntity().toString()); } - try { // httpClient对象执行post请求,并返回响应参数对象 - httpResponse = httpClient.execute(httpPost); + httpResponse = httpClient.execute(httpMethod); // 从响应对象中获取响应内容 HttpEntity entity = httpResponse.getEntity(); String content = EntityUtils.toString(entity); @@ -138,59 +130,33 @@ public class HttpRequestAdapter { } catch (Exception e) { e.printStackTrace(); } finally { - // 关闭资源 - if (null != httpResponse) { - try { - httpResponse.close(); - } catch (IOException e) { - e.printStackTrace(); - } - } - if (null != httpClient) { - try { - httpClient.close(); - } catch (IOException e) { - e.printStackTrace(); - } - } + close(httpClient,httpResponse);// 关闭资源 } return null; } - - public String postJson(String url,String jsonString,HashMap headers) { + + + public String post(String url,Object data) { // 创建httpClient实例 CloseableHttpClient httpClient = HttpClients.createDefault(); CloseableHttpResponse httpResponse = null; // 创建httpPost远程连接实例 - HttpPost httpPost = new HttpPost(url); + HttpPost httpMethod = new HttpPost(url); // 配置请求参数实例 - RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(35000)// 设置连接主机服务超时时间 - .setConnectionRequestTimeout(35000)// 设置连接请求超时时间 - .setSocketTimeout(60000)// 设置读取数据连接超时时间 - .build(); - // 为httpPost实例设置配置 - httpPost.setConfig(requestConfig); + setRequestConfig(httpMethod); // 设置请求头 - if (null != headers && headers.size() > 0) { - Set> entrySet = headers.entrySet(); - // 循环遍历,获取迭代器 - Iterator> iterator = entrySet.iterator(); - while (iterator.hasNext()) { - Entry mapEntry = iterator.next(); - _logger.trace("Name " + mapEntry.getKey() + " , Value " +mapEntry.getValue()); - httpPost.addHeader(mapEntry.getKey(), mapEntry.getValue()); - } - } + buildHeader(httpMethod,headers); - // 封装post请求参数 + // 封装put请求参数 + String jsonString = JsonUtils.gson2Json(data); StringEntity stringEntity =new StringEntity(jsonString, "UTF-8"); - stringEntity.setContentType("application/json"); - httpPost.setEntity(stringEntity); - + stringEntity.setContentType(ContentType.APPLICATION_JSON); + httpMethod.setEntity(stringEntity); + _logger.debug("Post Message \n{} ", httpMethod.getEntity().toString()); try { - // httpClient对象执行post请求,并返回响应参数对象 - httpResponse = httpClient.execute(httpPost); + // httpClient对象执行put请求,并返回响应参数对象 + httpResponse = httpClient.execute(httpMethod); // 从响应对象中获取响应内容 HttpEntity entity = httpResponse.getEntity(); String content = EntityUtils.toString(entity); @@ -202,28 +168,51 @@ public class HttpRequestAdapter { } catch (Exception e) { e.printStackTrace(); } finally { - // 关闭资源 - if (null != httpResponse) { - try { - httpResponse.close(); - } catch (IOException e) { - e.printStackTrace(); - } - } - if (null != httpClient) { - try { - httpClient.close(); - } catch (IOException e) { - e.printStackTrace(); - } - } + close(httpClient,httpResponse);// 关闭资源 } return null; } + public String put(String url,Object data) { + // 创建httpClient实例 + CloseableHttpClient httpClient = HttpClients.createDefault(); + CloseableHttpResponse httpResponse = null; + // 创建httpPost远程连接实例 + HttpPut httpMethod = new HttpPut(url); + // 配置请求参数实例 + setRequestConfig(httpMethod); + // 设置请求头 + buildHeader(httpMethod,headers); + + // 封装put请求参数 + String jsonString = JsonUtils.gson2Json(data); + StringEntity stringEntity =new StringEntity(jsonString, "UTF-8"); + stringEntity.setContentType(ContentType.APPLICATION_JSON); + httpMethod.setEntity(stringEntity); + _logger.debug("Post Message \n{} ", httpMethod.getEntity().toString()); + + try { + // httpClient对象执行put请求,并返回响应参数对象 + httpResponse = httpClient.execute(httpMethod); + // 从响应对象中获取响应内容 + HttpEntity entity = httpResponse.getEntity(); + String content = EntityUtils.toString(entity); + _logger.debug("Http Response StatusCode {} , Content {}", + httpResponse.getStatusLine().getStatusCode(), + content + ); + return content; + } catch (Exception e) { + e.printStackTrace(); + } finally { + close(httpClient,httpResponse);// 关闭资源 + } + return null; + } + + public String get(String url) { - HashMap headers = new HashMap(); - headers.put("Content-Type", "application/x-www-form-urlencoded"); + headers.put("Content-Type", ContentType.APPLICATION_FORM); return get(url , headers); } @@ -232,29 +221,15 @@ public class HttpRequestAdapter { CloseableHttpClient httpClient = HttpClients.createDefault(); CloseableHttpResponse httpResponse = null; // 创建httpPost远程连接实例 - HttpGet httpGet = new HttpGet(url); + HttpGet httpMethod = new HttpGet(url); // 配置请求参数实例 - RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(35000)// 设置连接主机服务超时时间 - .setConnectionRequestTimeout(35000)// 设置连接请求超时时间 - .setSocketTimeout(60000)// 设置读取数据连接超时时间 - .build(); - // 为httpGet实例设置配置 - httpGet.setConfig(requestConfig); + setRequestConfig(httpMethod); // 设置请求头 - if (null != headers && headers.size() > 0) { - Set> entrySet = headers.entrySet(); - // 循环遍历,获取迭代器 - Iterator> iterator = entrySet.iterator(); - while (iterator.hasNext()) { - Entry mapEntry = iterator.next(); - _logger.trace("Name " + mapEntry.getKey() + " , Value " +mapEntry.getValue()); - httpGet.addHeader(mapEntry.getKey(), mapEntry.getValue()); - } - } + buildHeader(httpMethod,headers); try { - // httpClient对象执行post请求,并返回响应参数对象 - httpResponse = httpClient.execute(httpGet); + // httpClient对象执行get请求,并返回响应参数对象 + httpResponse = httpClient.execute(httpMethod); // 从响应对象中获取响应内容 HttpEntity entity = httpResponse.getEntity(); String content = EntityUtils.toString(entity); @@ -266,23 +241,105 @@ public class HttpRequestAdapter { } catch (Exception e) { e.printStackTrace(); } finally { - // 关闭资源 - if (null != httpResponse) { - try { - httpResponse.close(); - } catch (IOException e) { - e.printStackTrace(); - } - } - if (null != httpClient) { - try { - httpClient.close(); - } catch (IOException e) { - e.printStackTrace(); - } - } + close(httpClient,httpResponse);// 关闭资源 } return null; } + public String delete(String url) { + // 创建httpClient实例 + CloseableHttpClient httpClient = HttpClients.createDefault(); + CloseableHttpResponse httpResponse = null; + // 创建HttpDelete远程连接实例 + HttpDelete httpMethod = new HttpDelete(url); + // 配置请求参数实例 + setRequestConfig(httpMethod); + // 设置请求头 + buildHeader(httpMethod,headers); + + try { + // httpClient对象执行post请求,并返回响应参数对象 + httpResponse = httpClient.execute(httpMethod); + // 从响应对象中获取响应内容 + HttpEntity entity = httpResponse.getEntity(); + String content = EntityUtils.toString(entity); + _logger.debug("Http Response StatusCode {} , Content {}", + httpResponse.getStatusLine().getStatusCode(), + content + ); + return content; + } catch (Exception e) { + e.printStackTrace(); + } finally { + close(httpClient,httpResponse);// 关闭资源 + } + return null; + } + + /** + * @param HttpRequest + * @param headers + */ + void buildHeader(HttpRequestBase httpRequest,HashMap headers) { + // 设置请求头 + if (null != headers && headers.size() > 0) { + Set> entrySet = headers.entrySet(); + // 循环遍历,获取迭代器 + Iterator> iterator = entrySet.iterator(); + while (iterator.hasNext()) { + Entry mapEntry = iterator.next(); + _logger.trace("Name " + mapEntry.getKey() + " , Value " +mapEntry.getValue()); + httpRequest.addHeader(mapEntry.getKey(), mapEntry.getValue()); + } + } + } + + UrlEncodedFormEntity buildFormEntity(Map parameterMap) + throws UnsupportedEncodingException { + List nvps = new ArrayList(); + // 通过map集成entrySet方法获取entity + Set> entrySet = parameterMap.entrySet(); + // 循环遍历,获取迭代器 + Iterator> iterator = entrySet.iterator(); + while (iterator.hasNext()) { + Entry mapEntry = iterator.next(); + _logger.debug("Name " + mapEntry.getKey() + " , Value " +mapEntry.getValue()); + nvps.add(new BasicNameValuePair(mapEntry.getKey(), mapEntry.getValue().toString())); + } + + // 为httpPost设置封装好的请求参数 + return new UrlEncodedFormEntity(nvps, "UTF-8"); + } + + void setRequestConfig(HttpRequestBase httpMethod){ + RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(35000)// 设置连接主机服务超时时间 + .setConnectionRequestTimeout(35000)// 设置连接请求超时时间 + .setSocketTimeout(60000)// 设置读取数据连接超时时间 + .build(); + // 为httpMethod实例设置配置 + httpMethod.setConfig(requestConfig); + } + + /** + * 关闭资源 + * @param httpClient + * @param httpResponse + */ + void close(CloseableHttpClient httpClient,CloseableHttpResponse httpResponse) { + if (null != httpResponse) { + try { + httpResponse.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + if (null != httpClient) { + try { + httpClient.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + } diff --git a/maxkey-persistence/src/main/java/org/maxkey/provision/thread/ProvisioningRunner.java b/maxkey-persistence/src/main/java/org/maxkey/provision/thread/ProvisioningRunner.java index 2668e00c9..2fcd8c88a 100644 --- a/maxkey-persistence/src/main/java/org/maxkey/provision/thread/ProvisioningRunner.java +++ b/maxkey-persistence/src/main/java/org/maxkey/provision/thread/ProvisioningRunner.java @@ -2,7 +2,6 @@ package org.maxkey.provision.thread; import java.sql.ResultSet; import java.sql.SQLException; -import java.util.HashMap; import java.util.List; import org.apache.mybatis.jpa.query.Query; @@ -16,7 +15,6 @@ import org.maxkey.persistence.service.ConnectorsService; import org.maxkey.provision.ProvisionAction; import org.maxkey.provision.ProvisionMessage; import org.maxkey.provision.ProvisionTopic; -import org.maxkey.util.AuthorizationHeaderUtils; import org.maxkey.util.DateUtils; import org.maxkey.util.JsonUtils; import org.maxkey.util.ObjectTransformer; @@ -147,46 +145,31 @@ public class ProvisioningRunner { String provisionUser(UserInfo user,String baseUrl,String actionType,Connectors connector){ baseUrl = baseUrl + "Users/" + getActionType(actionType); _logger.debug("URL {} ", baseUrl); - HashMap authorizationMap = AuthorizationHeaderUtils.authorization( - AuthorizationHeaderUtils.createBasic( - connector.getPrincipal(), + return new HttpRequestAdapter() + .addHeaderAuthorizationBasic( + connector.getPrincipal(), PasswordReciprocal.getInstance().decoder(connector.getCredentials())) - ); - - return new HttpRequestAdapter().postJson( baseUrl, - JsonUtils.gson2Json(user), - authorizationMap - ); + .post(baseUrl, user); } - String provisionOrganization(Organizations organizations,String baseUrl,String actionType,Connectors connector){ + String provisionOrganization(Organizations organization,String baseUrl,String actionType,Connectors connector){ baseUrl = baseUrl + "Organizations/"+ getActionType(actionType); _logger.debug("URL {} ", baseUrl); - HashMap authorizationMap = AuthorizationHeaderUtils.authorization( - AuthorizationHeaderUtils.createBasic( - connector.getPrincipal(), + return new HttpRequestAdapter() + .addHeaderAuthorizationBasic( + connector.getPrincipal(), PasswordReciprocal.getInstance().decoder(connector.getCredentials())) - ); - - return new HttpRequestAdapter().postJson( baseUrl, - JsonUtils.gson2Json(organizations), - authorizationMap - ); + .post(baseUrl, organization); } String provisionChangePassword(ChangePassword changePassword,String baseUrl,String actionType,Connectors connector){ baseUrl = baseUrl + "Users/changePassword"; _logger.debug("URL {} ", baseUrl); - HashMap authorizationMap = AuthorizationHeaderUtils.authorization( - AuthorizationHeaderUtils.createBasic( - connector.getPrincipal(), + return new HttpRequestAdapter() + .addHeaderAuthorizationBasic( + connector.getPrincipal(), PasswordReciprocal.getInstance().decoder(connector.getCredentials())) - ); - - return new HttpRequestAdapter().postJson( baseUrl, - JsonUtils.gson2Json(changePassword), - authorizationMap - ); + .post(baseUrl, changePassword); } public class ProvisionMessageRowMapper implements RowMapper { diff --git a/maxkey-protocols/maxkey-protocol-jwt/src/main/java/org/maxkey/authz/token/endpoint/JwtAuthorizeEndpoint.java b/maxkey-protocols/maxkey-protocol-jwt/src/main/java/org/maxkey/authz/token/endpoint/JwtAuthorizeEndpoint.java index 1b06d0e8b..e6d2e0ec2 100644 --- a/maxkey-protocols/maxkey-protocol-jwt/src/main/java/org/maxkey/authz/token/endpoint/JwtAuthorizeEndpoint.java +++ b/maxkey-protocols/maxkey-protocol-jwt/src/main/java/org/maxkey/authz/token/endpoint/JwtAuthorizeEndpoint.java @@ -21,7 +21,6 @@ package org.maxkey.authz.token.endpoint; import java.lang.reflect.InvocationTargetException; -import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -42,9 +41,7 @@ import org.maxkey.entity.apps.Apps; import org.maxkey.entity.apps.AppsJwtDetails; import org.maxkey.persistence.service.AppsJwtDetailsService; import org.maxkey.util.Instance; -import org.maxkey.web.HttpRequestAdapter; import org.maxkey.web.WebConstants; -import org.maxkey.web.WebContext; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -138,7 +135,7 @@ public class JwtAuthorizeEndpoint extends AuthorizeBaseEndpoint{ JWKSetKeyStore jwkSetKeyStore = new JWKSetKeyStore("{\"keys\": [" + jwkSetString + "]}"); if(StringUtils.isNotBlank(mediaType) - && mediaType.equalsIgnoreCase(HttpRequestAdapter.MediaType.XML)) { + && mediaType.equalsIgnoreCase("xml")) { response.setContentType(ContentType.APPLICATION_XML_UTF8); }else { response.setContentType(ContentType.APPLICATION_JSON_UTF8); diff --git a/maxkey-protocols/maxkey-protocol-oauth-2.0/src/main/java/org/maxkey/authz/oauth2/provider/endpoint/AuthorizationEndpoint.java b/maxkey-protocols/maxkey-protocol-oauth-2.0/src/main/java/org/maxkey/authz/oauth2/provider/endpoint/AuthorizationEndpoint.java index bcdc31fb1..23a8474bf 100644 --- a/maxkey-protocols/maxkey-protocol-oauth-2.0/src/main/java/org/maxkey/authz/oauth2/provider/endpoint/AuthorizationEndpoint.java +++ b/maxkey-protocols/maxkey-protocol-oauth-2.0/src/main/java/org/maxkey/authz/oauth2/provider/endpoint/AuthorizationEndpoint.java @@ -53,7 +53,6 @@ import org.maxkey.entity.Message; import org.maxkey.entity.UserInfo; import org.maxkey.entity.apps.Apps; import org.maxkey.entity.apps.oauth2.provider.ClientDetails; -import org.maxkey.web.HttpRequestAdapter; import org.maxkey.web.WebConstants; import org.maxkey.web.WebContext; import org.slf4j.Logger; @@ -324,7 +323,7 @@ public class AuthorizationEndpoint extends AbstractEndpoint { JWKSetKeyStore jwkSetKeyStore = new JWKSetKeyStore("{\"keys\": [" + jwkSetString + "]}"); if(StringUtils.hasText(mediaType) - && mediaType.equalsIgnoreCase(HttpRequestAdapter.MediaType.XML)) { + && mediaType.equalsIgnoreCase("xml")) { response.setContentType(ContentType.APPLICATION_XML_UTF8); }else { response.setContentType(ContentType.APPLICATION_JSON_UTF8); diff --git a/maxkey-synchronizers/maxkey-synchronizer-feishu/src/main/java/org/maxkey/synchronizer/feishu/FeishuAccessTokenService.java b/maxkey-synchronizers/maxkey-synchronizer-feishu/src/main/java/org/maxkey/synchronizer/feishu/FeishuAccessTokenService.java index 0b699b329..016d40b11 100644 --- a/maxkey-synchronizers/maxkey-synchronizer-feishu/src/main/java/org/maxkey/synchronizer/feishu/FeishuAccessTokenService.java +++ b/maxkey-synchronizers/maxkey-synchronizer-feishu/src/main/java/org/maxkey/synchronizer/feishu/FeishuAccessTokenService.java @@ -20,10 +20,10 @@ package org.maxkey.synchronizer.feishu; import java.util.HashMap; import java.util.Map; +import org.maxkey.constants.ContentType; import org.maxkey.synchronizer.entity.AccessToken; import org.maxkey.util.JsonUtils; import org.maxkey.web.HttpRequestAdapter; -import org.maxkey.web.HttpRequestAdapter.MediaType; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -48,7 +48,7 @@ public class FeishuAccessTokenService { public String requestToken() { - HttpRequestAdapter request =new HttpRequestAdapter(MediaType.JSON); + HttpRequestAdapter request =new HttpRequestAdapter(ContentType.APPLICATION_JSON); Map parameterMap = new HashMap(); parameterMap.put("app_id", appId); parameterMap.put("app_secret", appSecret);