作者 王勇

搭建sdk基础架子

  1 +{
  2 + "lockfileVersion": 1
  3 +}
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +
  3 +<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
  4 + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5 + <modelVersion>4.0.0</modelVersion>
  6 +
  7 + <groupId>com.sunyo.wlpt.message.bus.sdk</groupId>
  8 + <artifactId>message_bus_sdk</artifactId>
  9 + <version>1.0.0</version>
  10 +
  11 + <name>message_bus_sdk</name>
  12 + <!-- FIXME change it to the project's website -->
  13 + <url>http://www.example.com</url>
  14 +
  15 + <properties>
  16 + <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
  17 + <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  18 + <maven.compiler.source>1.8</maven.compiler.source>
  19 + <maven.compiler.target>1.8</maven.compiler.target>
  20 + </properties>
  21 +
  22 + <dependencies>
  23 +
  24 + <dependency>
  25 + <groupId>com.squareup.okhttp3</groupId>
  26 + <artifactId>okhttp</artifactId>
  27 + <version>4.8.1</version>
  28 + </dependency>
  29 +
  30 + <dependency>
  31 + <groupId>org.apache.httpcomponents</groupId>
  32 + <artifactId>httpclient</artifactId>
  33 + <version>4.5.12</version>
  34 + </dependency>
  35 +
  36 + <dependency>
  37 + <groupId>org.apache.commons</groupId>
  38 + <artifactId>commons-lang3</artifactId>
  39 + <version>3.11</version>
  40 + </dependency>
  41 +
  42 + <dependency>
  43 + <groupId>com.google.code.gson</groupId>
  44 + <artifactId>gson</artifactId>
  45 + <version>2.8.6</version>
  46 + </dependency>
  47 +
  48 +
  49 + <dependency>
  50 + <groupId>log4j</groupId>
  51 + <artifactId>log4j</artifactId>
  52 + <version>1.2.17</version>
  53 + </dependency>
  54 +
  55 + <dependency>
  56 + <groupId>org.slf4j</groupId>
  57 + <artifactId>slf4j-nop</artifactId>
  58 + <version>1.7.30</version>
  59 + </dependency>
  60 +
  61 + <dependency>
  62 + <groupId>org.slf4j</groupId>
  63 + <artifactId>slf4j-simple</artifactId>
  64 + <version>1.7.30</version>
  65 + <scope>test</scope>
  66 + </dependency>
  67 +
  68 + <dependency>
  69 + <groupId>org.slf4j</groupId>
  70 + <artifactId>slf4j-log4j12</artifactId>
  71 + <version>1.7.30</version>
  72 + <scope>test</scope>
  73 + </dependency>
  74 +
  75 + <dependency>
  76 + <groupId>org.slf4j</groupId>
  77 + <artifactId>slf4j-api</artifactId>
  78 + <version>1.7.30</version>
  79 + </dependency>
  80 +
  81 +
  82 +
  83 + </dependencies>
  84 +
  85 + <build>
  86 + <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
  87 + <plugins>
  88 + <!-- clean lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle -->
  89 + <plugin>
  90 + <artifactId>maven-clean-plugin</artifactId>
  91 + <version>3.1.0</version>
  92 + </plugin>
  93 + <!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging -->
  94 + <plugin>
  95 + <artifactId>maven-resources-plugin</artifactId>
  96 + <version>3.0.2</version>
  97 + </plugin>
  98 + <plugin>
  99 + <artifactId>maven-compiler-plugin</artifactId>
  100 + <version>3.8.0</version>
  101 + </plugin>
  102 + <plugin>
  103 + <artifactId>maven-surefire-plugin</artifactId>
  104 + <version>2.22.1</version>
  105 + </plugin>
  106 + <plugin>
  107 + <artifactId>maven-jar-plugin</artifactId>
  108 + <version>3.0.2</version>
  109 + </plugin>
  110 + <plugin>
  111 + <artifactId>maven-install-plugin</artifactId>
  112 + <version>2.5.2</version>
  113 + </plugin>
  114 + <plugin>
  115 + <artifactId>maven-deploy-plugin</artifactId>
  116 + <version>2.8.2</version>
  117 + </plugin>
  118 + <!-- site lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#site_Lifecycle -->
  119 + <plugin>
  120 + <artifactId>maven-site-plugin</artifactId>
  121 + <version>3.7.1</version>
  122 + </plugin>
  123 + <!-- <plugin>-->
  124 + <!-- <artifactId>maven-project-info-reports-plugin</artifactId>-->
  125 + <!-- <version>3.0.0</version>-->
  126 + <!-- </plugin>-->
  127 + </plugins>
  128 + </pluginManagement>
  129 + </build>
  130 + </project>
  1 +package com.sunyo.wlpt.message.bus.sdk;
  2 +
  3 +import com.sunyo.wlpt.message.bus.sdk.request.MessageRequest;
  4 +import com.sunyo.wlpt.message.bus.sdk.response.BusResult;
  5 +
  6 +import java.io.IOException;
  7 +
  8 +/**
  9 + * Hello world!
  10 + */
  11 +public class App {
  12 + public static void main(String[] args)
  13 + {
  14 + MessageRequest request = new MessageRequest();
  15 + BusResult result = request.getMessageOne("zicheng", "S_zicheng",
  16 + "V_zicheng", "V_zicheng_zicheng_R");
  17 + System.out.println(result);
  18 + }
  19 +}
  1 +package com.sunyo.wlpt.message.bus.sdk.request;
  2 +
  3 +import com.sunyo.wlpt.message.bus.sdk.response.ResultJson;
  4 +import com.sunyo.wlpt.message.bus.sdk.utils.GsonUtil;
  5 +import com.sunyo.wlpt.message.bus.sdk.utils.OkHttpUtils;
  6 +import okhttp3.MediaType;
  7 +
  8 +
  9 +import java.io.IOException;
  10 +import java.util.HashMap;
  11 +
  12 +/**
  13 + * @author 子诚
  14 + * Description:
  15 + * 时间:2020/9/3 15:18
  16 + */
  17 +public class BusMessage {
  18 +
  19 + private static final String URL_CONSUMER_ONE = "http://192.168.1.33:9032/bus/rabbit/consumer_one";
  20 + private static final String URL_CONSUMER_MORE = "http://192.168.1.33:9032/bus/rabbit/consumer_more";
  21 +
  22 +
  23 + private static final MediaType MEDIA_TYPE_TEXT = MediaType.parse("application/x-www-form-urlencoded; charset=utf-8");
  24 +
  25 + /**
  26 + * 指定队列,消费一条消息
  27 + *
  28 + * @param RUSR 接收者
  29 + * @param SERV 服务器名称
  30 + * @param VSHT 虚拟主机名称
  31 + * @param RCVR 队列名称
  32 + * @return
  33 + * @throws IOException
  34 + */
  35 + public static ResultJson consumerOne(String RUSR, String SERV, String VSHT, String RCVR)
  36 + {
  37 + HashMap<String, String> params = new HashMap<>();
  38 + params.put("RUSR", RUSR);
  39 + params.put("SERV", SERV);
  40 + params.put("VSHT", VSHT);
  41 + params.put("RCVR", RCVR);
  42 +
  43 + OkHttpUtils okHttp = new OkHttpUtils();
  44 + String json = okHttp.doGet(URL_CONSUMER_ONE, params);
  45 + ResultJson result = GsonUtil.GsonToBean(json, ResultJson.class);
  46 + return result;
  47 + }
  48 +
  49 +
  50 +}
  1 +package com.sunyo.wlpt.message.bus.sdk.request;
  2 +
  3 +import com.sunyo.wlpt.message.bus.sdk.response.BusResult;
  4 +import com.sunyo.wlpt.message.bus.sdk.response.ResultJson;
  5 +
  6 +/**
  7 + * @author 子诚
  8 + * Description:
  9 + * 时间:2020/9/3 18:04
  10 + */
  11 +public class MessageRequest {
  12 +
  13 + private static final String SUCCESS_ONE_CODE = "20200";
  14 +
  15 + /**
  16 + * 接收消息,一条
  17 + *
  18 + * @param RUSR 接收人名称
  19 + * @param SERV 服务器名称
  20 + * @param VSHT 虚拟主机名称
  21 + * @param RCVR 接收队列名称
  22 + * @return
  23 + */
  24 + public BusResult getMessageOne(String RUSR, String SERV, String VSHT, String RCVR)
  25 + {
  26 + ResultJson resultJson = BusMessage.consumerOne(RUSR, SERV, VSHT, RCVR);
  27 + if (resultJson == null) {
  28 +
  29 + }
  30 + String code = resultJson.getCode();
  31 + String msg = resultJson.getMsg();
  32 + if (!SUCCESS_ONE_CODE.equals(resultJson.getCode())) {
  33 + String resultMessage = "错误代码:" + code + ";错误信息:" + msg;
  34 + BusResult errorResult = new BusResult(false, code, resultMessage);
  35 + return errorResult;
  36 + }
  37 + String data = (String) resultJson.getData();
  38 + BusResult result = new BusResult(true, code, msg, data);
  39 + return result;
  40 + }
  41 +}
  1 +package com.sunyo.wlpt.message.bus.sdk.response;
  2 +
  3 +import java.util.List;
  4 +
  5 +/**
  6 + * @author 子诚
  7 + * Description:返回结果类
  8 + * 时间:2020/9/3 18:49
  9 + */
  10 +public class BusResult {
  11 +
  12 + /**
  13 + * 是否成功?
  14 + * true,成功
  15 + * false,失败
  16 + */
  17 + private Boolean isOk;
  18 +
  19 + /**
  20 + * 状态代码
  21 + */
  22 + private String code;
  23 +
  24 + /**
  25 + * 对应状态信息
  26 + */
  27 + private String message;
  28 +
  29 + /**
  30 + * 接收一条消息的存放属性
  31 + */
  32 + private String data;
  33 +
  34 + /**
  35 + * 接收多条消息的存放属性
  36 + */
  37 + private List<String> dataList;
  38 +
  39 + public BusResult(Boolean isOk, String code, String message)
  40 + {
  41 + this.isOk = isOk;
  42 + this.code = code;
  43 + this.message = message;
  44 + }
  45 +
  46 + public BusResult(Boolean isOk, String code, String message, String data)
  47 + {
  48 + this.isOk = isOk;
  49 + this.code = code;
  50 + this.message = message;
  51 + this.data = data;
  52 + }
  53 +
  54 + public BusResult(Boolean isOk, String code, String message, List<String> dataList)
  55 + {
  56 + this.isOk = isOk;
  57 + this.code = code;
  58 + this.message = message;
  59 + this.dataList = dataList;
  60 + }
  61 +
  62 + public Boolean getOk()
  63 + {
  64 + return isOk;
  65 + }
  66 +
  67 + public void setOk(Boolean ok)
  68 + {
  69 + isOk = ok;
  70 + }
  71 +
  72 + public String getCode()
  73 + {
  74 + return code;
  75 + }
  76 +
  77 + public void setCode(String code)
  78 + {
  79 + this.code = code;
  80 + }
  81 +
  82 + public String getMessage()
  83 + {
  84 + return message;
  85 + }
  86 +
  87 + public void setMessage(String message)
  88 + {
  89 + this.message = message;
  90 + }
  91 +
  92 + public String getData()
  93 + {
  94 + return data;
  95 + }
  96 +
  97 + public void setData(String data)
  98 + {
  99 + this.data = data;
  100 + }
  101 +
  102 + public List<String> getDataList()
  103 + {
  104 + return dataList;
  105 + }
  106 +
  107 + public void setDataList(List<String> dataList)
  108 + {
  109 + this.dataList = dataList;
  110 + }
  111 +}
  1 +package com.sunyo.wlpt.message.bus.sdk.response;
  2 +
  3 +
  4 +
  5 +
  6 +import java.io.Serializable;
  7 +
  8 +/**
  9 + * @author 子诚
  10 + * Description:返回结果封装类
  11 + * 时间:2020/7/01 10:06
  12 + */
  13 +public class ResultJson<T> implements Serializable {
  14 +
  15 + private static final long serialVersionUID = 1L;
  16 +
  17 + /**
  18 + * 响应业务状态,默认为200
  19 + */
  20 + private String code;
  21 +
  22 + /**
  23 + * 响应消息
  24 + */
  25 + private String msg;
  26 +
  27 + /**
  28 + * 错误消息内容
  29 + */
  30 + private String error;
  31 +
  32 + /**
  33 + * 数据总条数
  34 + */
  35 + private Integer total;
  36 +
  37 + /**
  38 + * 响应数据
  39 + */
  40 + private T data;
  41 +
  42 + /**
  43 + * JWT令牌
  44 + */
  45 + private String jwtToken;
  46 +
  47 +
  48 + /**
  49 + * 无参,构造方法
  50 + */
  51 + public ResultJson()
  52 + {
  53 + }
  54 +
  55 +
  56 + /**
  57 + * 定义有参构造器
  58 + *
  59 + * @param code 响应状态
  60 + * @param msg 响应消息
  61 + */
  62 + public ResultJson(String code, String msg)
  63 + {
  64 + this.code = code;
  65 + this.msg = msg;
  66 + }
  67 +
  68 + /**
  69 + * 定义有参构造器
  70 + *
  71 + * @param code 响应状态
  72 + * @param msg 响应消息
  73 + * @param data 响应数据
  74 + */
  75 + public ResultJson(String code, String msg, T data)
  76 + {
  77 + this.code = code;
  78 + this.msg = msg;
  79 + this.data = data;
  80 + }
  81 +
  82 + public ResultJson(String code, String msg, T data, Integer total)
  83 + {
  84 + this.code = code;
  85 + this.msg = msg;
  86 + this.data = data;
  87 + this.total = total;
  88 + }
  89 +
  90 + public String getCode()
  91 + {
  92 + return code;
  93 + }
  94 +
  95 + public void setCode(String code)
  96 + {
  97 + this.code = code;
  98 + }
  99 +
  100 + public String getMsg()
  101 + {
  102 + return msg;
  103 + }
  104 +
  105 + public void setMsg(String msg)
  106 + {
  107 + this.msg = msg;
  108 + }
  109 +
  110 + public String getError()
  111 + {
  112 + return error;
  113 + }
  114 +
  115 + public void setError(String error)
  116 + {
  117 + this.error = error;
  118 + }
  119 +
  120 + public Integer getTotal()
  121 + {
  122 + return total;
  123 + }
  124 +
  125 + public void setTotal(Integer total)
  126 + {
  127 + this.total = total;
  128 + }
  129 +
  130 + public T getData()
  131 + {
  132 + return data;
  133 + }
  134 +
  135 + public void setData(T data)
  136 + {
  137 + this.data = data;
  138 + }
  139 +
  140 + public String getJwtToken()
  141 + {
  142 + return jwtToken;
  143 + }
  144 +
  145 + public void setJwtToken(String jwtToken)
  146 + {
  147 + this.jwtToken = jwtToken;
  148 + }
  149 +}
  1 +package com.sunyo.wlpt.message.bus.sdk.utils;
  2 +
  3 +import java.util.ArrayList;
  4 +import java.util.List;
  5 +import java.util.Map;
  6 +
  7 +import com.google.gson.Gson;
  8 +import com.google.gson.GsonBuilder;
  9 +import com.google.gson.JsonArray;
  10 +import com.google.gson.JsonElement;
  11 +import com.google.gson.JsonParser;
  12 +import com.google.gson.reflect.TypeToken;
  13 +
  14 +/**
  15 + * @author 子诚
  16 + * Description:
  17 + * 时间:2020/6/5 10:49
  18 + */
  19 +public class GsonUtil {
  20 +
  21 + private static Gson gson = null;
  22 +
  23 + static {
  24 + if (gson == null) {
  25 + gson = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create();
  26 + }
  27 + }
  28 +
  29 +
  30 + private GsonUtil()
  31 + {
  32 + }
  33 +
  34 + /**
  35 + * 将对象转成json格式
  36 + *
  37 + * @param object
  38 + * @return String
  39 + */
  40 + public static String GsonString(Object object)
  41 + {
  42 + String gsonString = null;
  43 + if (gson != null) {
  44 + gsonString = gson.toJson(object);
  45 + }
  46 + return gsonString;
  47 + }
  48 +
  49 + /**
  50 + * 将json转成特定的cls的对象
  51 + *
  52 + * @param gsonString
  53 + * @param cls
  54 + * @return
  55 + */
  56 + public static <T> T GsonToBean(String gsonString, Class<T> cls)
  57 + {
  58 + T t = null;
  59 + if (gson != null) {
  60 + t = gson.fromJson(gsonString, cls);
  61 + }
  62 + return t;
  63 + }
  64 +
  65 + /**
  66 + * json字符串转成list
  67 + *
  68 + * @param gsonString
  69 + * @param cls
  70 + * @return
  71 + */
  72 + public static <T> List<T> GsonToList(String gsonString, Class<T> cls)
  73 + {
  74 + List<T> list = null;
  75 + if (gson != null) {
  76 + list = gson.fromJson(gsonString, new TypeToken<List<T>>() {
  77 + }.getType());
  78 + }
  79 + return list;
  80 + }
  81 +
  82 + /**
  83 + * json字符串转成list
  84 + *
  85 + * @param json
  86 + * @param cls
  87 + * @return
  88 + */
  89 + public static <T> List<T> jsonToList(String json, Class<T> cls)
  90 + {
  91 + ArrayList<T> mList = new ArrayList<T>();
  92 + JsonArray array = new JsonParser().parse(json).getAsJsonArray();
  93 + for (final JsonElement elem : array) {
  94 + mList.add(gson.fromJson(elem, cls));
  95 + }
  96 + return mList;
  97 + }
  98 +
  99 + /**
  100 + * json字符串转成list中有map的
  101 + *
  102 + * @param gsonString
  103 + * @return
  104 + */
  105 + public static <T> List<Map<String, T>> GsonToListMaps(String gsonString)
  106 + {
  107 + List<Map<String, T>> list = null;
  108 + if (gson != null) {
  109 + list = gson.fromJson(gsonString,
  110 + new TypeToken<List<Map<String, T>>>() {
  111 + }.getType());
  112 + }
  113 + return list;
  114 + }
  115 +
  116 + /**
  117 + * json字符串转成map的
  118 + *
  119 + * @param gsonString
  120 + * @return
  121 + */
  122 + public static <T> Map<String, T> GsonToMaps(String gsonString)
  123 + {
  124 + Map<String, T> map = null;
  125 + if (gson != null) {
  126 + map = gson.fromJson(gsonString, new TypeToken<Map<String, T>>() {
  127 + }.getType());
  128 + }
  129 + return map;
  130 + }
  131 +}
  1 +package com.sunyo.wlpt.message.bus.sdk.utils;
  2 +
  3 +import lombok.extern.slf4j.Slf4j;
  4 +import okhttp3.*;
  5 +import org.apache.commons.lang3.StringUtils;
  6 +
  7 +
  8 +import java.net.URLEncoder;
  9 +import java.util.HashMap;
  10 +import java.util.Map;
  11 +import java.util.concurrent.TimeUnit;
  12 +
  13 +/**
  14 + * @author 子诚
  15 + * Description:
  16 + * 时间:2020/9/3 15:22
  17 + */
  18 +@Slf4j
  19 +public class OkHttpUtils {
  20 +
  21 + private static final MediaType MEDIA_TYPE_JSON = MediaType.parse("application/json; charset=utf-8");
  22 + private static final MediaType MEDIA_TYPE_TEXT = MediaType.parse("application/x-www-form-urlencoded; charset=utf-8");
  23 + private static final byte[] LOCKER = new byte[0];
  24 + private static OkHttpUtils instance;
  25 + private OkHttpClient okHttpClient;
  26 +
  27 + public OkHttpUtils()
  28 + {
  29 + okHttpClient = new OkHttpClient.Builder()
  30 + //10秒连接超时
  31 + .connectTimeout(10, TimeUnit.SECONDS)
  32 + //10m秒写入超时
  33 + .writeTimeout(10, TimeUnit.SECONDS)
  34 + //10秒读取超时
  35 + .readTimeout(10, TimeUnit.SECONDS)
  36 + .build();
  37 + }
  38 +
  39 + public static OkHttpUtils getInstance()
  40 + {
  41 + if (instance == null) {
  42 + synchronized (LOCKER) {
  43 + if (instance == null) {
  44 + instance = new OkHttpUtils();
  45 + }
  46 + }
  47 + }
  48 + return instance;
  49 + }
  50 +
  51 + public String doGet(String url)
  52 + {
  53 + if (isBlankUrl(url)) {
  54 + return null;
  55 + }
  56 + Request request = getRequestForGet(url);
  57 + return commonRequest(request);
  58 + }
  59 +
  60 + public String doGet(String url, HashMap<String, String> params)
  61 + {
  62 + if (isBlankUrl(url)) {
  63 + return null;
  64 + }
  65 + Request request = getRequestForGet(url, params);
  66 + return commonRequest(request);
  67 + }
  68 +
  69 + public String doPostJson(String url, String json)
  70 + {
  71 + if (isBlankUrl(url)) {
  72 + return null;
  73 + }
  74 + Request request = getRequestForPostJson(url, json);
  75 + return commonRequest(request);
  76 + }
  77 +
  78 + public String doPostForm(String url, Map<String, String> params)
  79 + {
  80 + if (isBlankUrl(url)) {
  81 + return null;
  82 + }
  83 + Request request = getRequestForPostForm(url, params);
  84 + return commonRequest(request);
  85 + }
  86 +
  87 + private Boolean isBlankUrl(String url)
  88 + {
  89 + if (StringUtils.isBlank(url)) {
  90 + log.info("url is not blank");
  91 + return true;
  92 + } else {
  93 + return false;
  94 + }
  95 + }
  96 +
  97 + private String commonRequest(Request request)
  98 + {
  99 + String re = "";
  100 + try {
  101 + Call call = okHttpClient.newCall(request);
  102 + Response response = call.execute();
  103 + if (response.isSuccessful()) {
  104 + re = response.body().string();
  105 + log.info("request url:{};response:{}", request.url().toString(), re);
  106 + } else {
  107 + log.info("request failure url:{};message:{}", request.url().toString(), response.message());
  108 + }
  109 + } catch (Exception e) {
  110 + log.error("request execute failure", e);
  111 + }
  112 + return re;
  113 + }
  114 +
  115 + private Request getRequestForPostJson(String url, String json)
  116 + {
  117 + RequestBody body = RequestBody.create(MEDIA_TYPE_JSON, json);
  118 + Request request = new Request.Builder()
  119 + .url(url)
  120 + .post(body)
  121 + .build();
  122 + return request;
  123 + }
  124 +
  125 +
  126 + private Request getRequestForPostForm(String url, Map<String, String> params)
  127 + {
  128 + if (params == null) {
  129 + params = new HashMap<>();
  130 + }
  131 + FormBody.Builder builder = new FormBody.Builder();
  132 + if (params != null && params.size() > 0) {
  133 + for (Map.Entry<String, String> entry : params.entrySet()) {
  134 + builder.addEncoded(entry.getKey(), entry.getValue());
  135 + }
  136 + }
  137 + RequestBody requestBody = builder.build();
  138 + Request request = new Request.Builder()
  139 + .url(url)
  140 + .post(requestBody)
  141 + .build();
  142 + return request;
  143 + }
  144 +
  145 + private Request getRequestForGet(String url, HashMap<String, String> params)
  146 + {
  147 + Request request = new Request.Builder()
  148 + .url(getUrlStringForGet(url, params))
  149 + .build();
  150 + return request;
  151 + }
  152 +
  153 + private Request getRequestForGet(String url)
  154 + {
  155 + Request request = new Request.Builder()
  156 + .url(url)
  157 + .build();
  158 + return request;
  159 + }
  160 +
  161 + private String getUrlStringForGet(String url, HashMap<String, String> params)
  162 + {
  163 + StringBuilder urlBuilder = new StringBuilder();
  164 + urlBuilder.append(url);
  165 + urlBuilder.append("?");
  166 + if (params != null && params.size() > 0) {
  167 + for (Map.Entry<String, String> entry : params.entrySet()) {
  168 + try {
  169 + urlBuilder.append("&").append(entry.getKey()).append("=").append(URLEncoder.encode(entry.getValue(), "UTF-8"));
  170 + } catch (Exception e) {
  171 + urlBuilder.append("&").append(entry.getKey()).append("=").append(entry.getValue());
  172 + }
  173 + }
  174 + }
  175 + return urlBuilder.toString();
  176 + }
  177 +
  178 +}