本人在作接口測試的過程當中,以前寫了一個用字符串替換的方法來處理get接口的參數拼接,後來優化了這個方法,兼容了中文字符提示非法字符的狀況,使用了java自帶的urlencode方法。包括第一種方法,以前傳的是json。分享代碼,供你們參考。java
更新:編程
/** * 方法已重載,獲取get對象 * <p>方法重載,主要區別參數,會自動進行urlencode操做</p> * * @param url 表示請求地址 * @param args 表示傳入數據 * @return 返回get對象 */ public static HttpGet getHttpGet(String url, JSONObject args) { if (args == null || args.size() == 0) return getHttpGet(url); String uri = url + changeJsonToArguments(args); return getHttpGet(uri.replace(" ", "")); } /** * 方法已重載,獲取get對象 * <p>方法重載,主要區別參數,會自動進行urlencode操做</p> * * @param url 表示請求地址 * @param args 表示傳入數據 * @return 返回get對象 */ public static HttpGet getHttpGet(String url) { return new HttpGet(url); }
其中changjsontoarguments方法以下:json
/** * 把json數據轉化爲參數,爲get請求和post請求stringentity的時候使用 * * @param argument 請求參數,json數據類型,map類型,可轉化 * @return 返回拼接參數後的地址 */ public static String changeJsonToArguments(JSONObject argument) { Set<String> keys = argument.keySet(); for (String key : keys) { String value = argument.getString(key); argument.put(key, urlEncoderText(value)); } String one = argument.toString(); String two = "?" + one.substring(1, one.length() - 1).replace(",", "&").replace(":", "=").replace("\"", ""); return two; }
--------------------------分割線------------------------------api
/** * 把json數據轉化爲參數,爲get請求和post請求stringentity的時候使用 * * @param argument * 請求參數,json數據類型,map類型,可轉化 * @return 返回拼接參數後的地址 */ @SuppressWarnings("unused") private String changeJsonToArguments(JSONObject argument) { String one = argument.toString(); String two = "?" + one.substring(1, one.length() - 1).replace(",", "&").replace(":", "=").replace("\"", ""); return two; } private String changeJsonToArguments(Map<String, String> apiCase) { Set<String> keys = apiCase.keySet(); StringBuffer arg = new StringBuffer("?"); for (String key : keys) { arg.append((key) + "=" + urlEncoderText(apiCase.get(key)) + "&"); } return arg.deleteCharAt(arg.length() -1).toString();//此處爲了兼容case內容爲空 }
/** * 把json數據轉化爲參數,爲get請求和post請求stringentity的時候使用 * * @param argument * 請求參數,json數據類型,map類型,可轉化 * @return 返回拼接參數後的地址 */ @SuppressWarnings("unused") private String changeJsonToArguments(JSONObject argument) { String one = argument.toString(); String two = "?" + one.substring(1, one.length() - 1).replace(",", "&").replace(":", "=").replace("\"", ""); return two; } private String changeJsonToArguments(Map<String, String> apiCase) { Set<String> keys = apiCase.keySet(); StringBuffer arg = new StringBuffer("?"); for (String key : keys) { arg.append((key) + "=" + urlEncoderText(apiCase.get(key)) + "&"); } return arg.deleteCharAt(arg.length() -1).toString();//此處爲了兼容case內容爲空 }
/** * url進行轉碼,經常使用於網絡請求 * * @param text * 須要加密的文本 * @return 返回加密後的文本 */ public String urlEncoderText(String text) { String result = ""; try { result = java.net.URLEncoder.encode(text, "utf-8"); } catch (UnsupportedEncodingException e) { output("數據格式錯誤!"); e.printStackTrace(); } return result; }