使用Java进行API测试

现在比较流行Restful api , 所以就跟风写一些api相关的东西,关于 api的定义和基本知识请度娘,主要说一下如何通过java来访问api.

package com.test;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;

import net.sf.json.JSONObject;

public class Test{
	@SuppressWarnings({ "unchecked", "rawtypes" })
	public static String result(String info) {
		String requestUrl = "apiurl";
		Map params = new HashMap();
		params.put("userid", "test");
		params.put("info", info);
		params.put("password or keys", "test");
		String str = httpRequestUrl(requestUrl, params);
		JSONObject bean= JSONObject.fromObject(str).getJSONObject("request body");
		return bean.getString("text");
	}

	@SuppressWarnings("rawtypes")
	private static String httpRequestUrl(String requestUrl, Map params) {
		StringBuffer buffer = new StringBuffer();
		try {
			URL url = new URL(requestUrl + "?" + urlEncode(params));
			HttpURLConnection httpUrlCon = (HttpURLConnection) url.openConnection();
			httpUrlCon.setDoInput(true);
			httpUrlCon.setRequestMethod("GET/POST/PUT");
			httpUrlCon.connect();

			InputStream inputStream = httpUrlCon.getInputStream();
			InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8");
			BufferedReader bufferedReader = new BufferedReader(inputStreamReader);

			String str = null;
			while ((str = bufferedReader.readLine()) != null) {
				buffer.append(str);
			}
			bufferedReader.close();
			inputStreamReader.close();
			inputStream.close();
			inputStream = null;
			httpUrlCon.disconnect();

		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return buffer.toString();
	}

	private static String urlEncode(Map<String, Object> data) {
		StringBuilder sb = new StringBuilder();
		for (Map.Entry i : data.entrySet()) {
			try {
				sb.append(i.getKey()).append("=").append(URLEncoder.encode(i.getValue() + "", "UTF-8")).append("&");
			} catch (UnsupportedEncodingException e) {
				e.printStackTrace();
			}
		}
		return sb.toString();
	}
}

上面的代码是对某个api进行请求, 该api返回json格式的数据, 然后解析json,获得我们想要的数据。

注意以下几点:

访问方式,一般是GET 或者POST

参数方式,一般都是hostname:port/folder?a=xxx&b=xxx

有些需要查看服务器返回的状态码,比如 2xx表示服务器已经收到,3xx在处理,重定向之类的,4xx表示客户端错误 ,比如访问的页面不存在,访问权限不够等,5xx 表示服务器出现了问题,比如解析请求失败 或者是服务器挂了等

代码中打开的连接记得关闭

然后就可以在testng中 调用这个方法进行测试。

如果是第一个api返回的数据要作为第二个api的参数使用,那就需要定义一个全局变量 ,将第一个api的值解析后赋给该全局变量, 然后 第二个api使用 该变量 。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值