public string HttpPost()
{
HttpWebRequest webrequest =
(HttpWebRequest)HttpWebRequest.Create("接口地址");
webrequest.Method = "POST";
webrequest.ContentType = "application/x-www-form-urlencoded"; //无关的请求头在本文中都省略掉了
webrequest.Headers.Add("Access-Token", "Sinopec-Station");
string postData = “json串” ;
byte[] postdatabyte = Encoding.UTF8.GetBytes(postData);
webrequest.ContentLength = postdatabyte.Length;
Stream stream = webrequest.GetRequestStream();
stream.Write(postdatabyte, 0, postdatabyte.Length);
stream.Close();
HttpWebResponse response = (HttpWebResponse)webrequest.GetResponse();
Stream myResponseStream = response.GetResponseStream();
//StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));
StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));
//StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("gb2312"));
string retString = myStreamReader.ReadToEnd();
myStreamReader.Close();
myResponseStream.Close();
return retString;
}
////post方法调用接口获取json文件内容
public string PostFunction()
{
string serviceAddress = ""接口地址"";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(serviceAddress);
request.Headers.Add("Access-Token", "Sinopec-Station");
request.Method = "POST";
request.ContentType = "application/json";
//request.CookieContainer = cookie; //cookie信息由CookieContainer自行维护
using (StreamWriter dataStream = new StreamWriter(request.GetRequestStream()))
{
dataStream.Write(“json串”);
dataStream.Close();
}
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
string encoding = response.ContentEncoding;
if (encoding == null || encoding.Length < 1)
{
encoding = "UTF-8"; //默认编码
}
StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding(encoding));
return reader.ReadToEnd();
}
//已经用
static CookieContainer cookie = new CookieContainer();
public static string doHttpPost(string Url, string postDataStr)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
request.Method = "POST";
//request.ContentType = "application/json";
//request.Accept = "application/json";
request.ContentType = "application/json";
//request.ContentLength = Encoding.UTF8.GetByteCount(postDataStr);
request.CookieContainer = cookie;
Stream myRequestStream = request.GetRequestStream();
StreamWriter myStreamWriter = new StreamWriter(myRequestStream, Encoding.GetEncoding("gb2312"));
myStreamWriter.Write(postDataStr);
myStreamWriter.Close();
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
response.Cookies = cookie.GetCookies(response.ResponseUri);
Stream myResponseStream = response.GetResponseStream();
StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));
string retString = myStreamReader.ReadToEnd();
myStreamReader.Close();
myResponseStream.Close();
return retString;
}
JMeter基础:请求参数Parameters 、Body Data的区别
使用Jmeter测试时,很多人不知道请求参数Parameters 、Body Data的区别和用途,这里简单介绍下:
先了解一个接口的基本概念
在客户机和服务器之间进行请求-响应时,HTTP协议中包括GET和POST两种基本的请求方法,概念上两者的区别是:
get:从指定的资源请求数据。
post:向指定的资源提交要被处理的数据
最直观的表现就是:
GET把参数包含在URL中,POST通过request body传递参数将请求整体提交给服务器。所以接口测试时要区分两种方法对待。
Jmeter中包含Parameters和Body Data两种参数化的方式,区别是什么呢?
使用Parameters时,Content-Type不传,或者直接传application/x-www-from-urlencoded,若传application/json出错。
使用Body Data时,Content-Type可传application/x-www-from-urlencoded或application/json,两者的区别是数据格式不同。
---------------------