/**
* Deal Post Request.
*/
package com.dc.util;
import java.util.Map;
import java.util.Iterator;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.HttpException;
public class PostRequest implements java.io.Serializable {
private Map parameters;
private String url;
public PostRequest() {
}
public void setParameters(Map param) {
if (param != null)
parameters = param;
}
public Map getParameters() {
return parameters;
}
public void setUrl(String url) {
if (url != null && !(url.equals("")))
this.url = url;
}
public String getUrl() {
return url;
}
public String getPost() throws java.io.IOException, HttpException {
if (url == null || url.equals("") || parameters == null)
throw new IllegalStateException(
"Invalid url or parameters in PostBean.getPost method.");
String returnData = "";
HttpClient httpClient = new HttpClient();
PostMethod postMethod = new PostMethod(url);
NameValuePair[] postData = getParams(parameters);
postMethod.getParams().setContentCharset("GBK");
postMethod.addParameters(postData);
httpClient.executeMethod(postMethod);
if (postMethod.getStatusCode() == HttpStatus.SC_OK) {
returnData = postMethod.getResponseBodyAsString();
} else {
returnData = "error: " + postMethod.getStatusLine();
}
postMethod.releaseConnection();
return returnData;
}
private NameValuePair[] getParams(Map map) {
NameValuePair[] pairs = new NameValuePair[map.size()];
Iterator iter = map.keySet().iterator();
int i = 0;
while (iter.hasNext()) {
String key = (String) iter.next();
pairs[i] = new NameValuePair(key, (String) map.get(key));
i++;
}
return pairs;
}
}
实现方法:
public class DCSMSender{
PostRequest pr = new PostRequest();
public static String smsUrl = DomainGlobal.SMS_URL;
private static DCSMSender instance = new DCSMSender();
public static DCSMSender getInstance() {
return instance;
}
private DCSMSender() {
}
/**
* 向指定手机号码(可多个)发送指定信息
*
* @param cellPhones 手机号
* @param msg 短信内容
* @return 成功、失败
*/
public boolean send(String[] cellPhones, String msg) {
Map param = new HashMap();
String result = "";
param.put("cellPhones", java.util.Arrays.toString(cellPhones));
param.put("msg", DcipherTrans.cipher("system", msg, true));
pr.setParameters(param);
pr.setUrl(smsUrl);
try {
result = pr.getPost();
if ("1".equals(result)) return true;
else return false;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
}
这是我项目里用到的发短信的方法。
望采纳
其实无论用那种测试方法,接口测试的原理是通过测试程序模拟客户端向服务器发送请求报文,服务器接收请求报文后对相应的报文做出处理然后再把应答报文发送给客户端,客户端接收应答报文这一个过程。
用LoadRunner实现接口测试
大家都知道LoadRunner是一种性能测试工具,但它也可以用在我们做接口测试的时候。开发人员开发出来的接口,提供给测试人员详细的接口使用说明书,该说明书最基本的要求如下:
接口测试地址:/SNS/Publish
< Publish >
这也是一种写法,可以跟web_submit_data互换。这种写法更利于拼接参数。
方法一适合一些xml结构的根元素下的子元素同处于根元素下面,且子元素数目较少的情况下,如果xml结构比较复杂,比如说根元素下面有多级子元素,或者xml树结构分叉较多的时候,我们可以先把xml拼接成一个字符串然后通过web_custom_request()向服务器发送请求。
我们在做接口功能测试的时候会很注意接口的应答报文的信息,这时候我们可以通过LoadRunner的日志信息查看或者可以通过web_reg_find()或者web_find()这样的API函数来统计接口的运行结果,推荐使用web_reg_find(),web_reg_find()和web_find()在这里。
因为web_reg_find()是注册型函数,所以应该放在web_submit_data()或者web_custom_request()的前面。
我愿意试一下 可以吗?一起探讨