如何拼接GET請求的參數

本人在作接口測試的過程當中,以前寫了一個用字符串替換的方法來處理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;
	}

技術類文章精選

  1. java一行代碼打印心形
  2. Linux性能監控軟件netdata中文漢化版
  3. 接口測試代碼覆蓋率(jacoco)方案分享
  4. 性能測試框架
  5. 如何在Linux命令行界面愉快進行性能測試
  6. 圖解HTTP腦圖
  7. 如何測試機率型業務接口
  8. httpclient處理多用戶同時在線
  9. 將swagger文檔自動變成測試代碼
  10. 五行代碼構建靜態博客
  11. httpclient如何處理302重定向
  12. 基於java的直線型接口測試框架初探
  13. Tcloud 雲測平臺--集大成者

非技術文章精選

  1. 爲何選擇軟件測試做爲職業道路?
  2. 成爲傑出Java開發人員的10個步驟
  3. 寫給全部人的編程思惟
  4. 自動化測試的障礙
  5. 自動化測試的問題所在
  6. 測試之《代碼不朽》腦圖
  7. 成爲優秀自動化測試工程師的7個步驟
  8. 優秀軟件開發人員的態度
  9. 如何正確執行功能API測試
  10. 將來10年軟件測試的新趨勢-上
  11. 將來10年軟件測試的新趨勢-上
  12. 自動化測試解決了什麼問題

點擊查看公衆號地圖

相關文章
相關標籤/搜索