目录
2.3请求参数为多分部数据(复合式表单)格式时,(以上传文件接口为例)
本文主要介绍了通过C#中的WebRequest来发送post和get两种请求方式的过程。
1.get请求方式
1.1不需要请求参数时
url为请求的接口地址
private string GetData(string url)
{
string result = string.Empty;
string error = string.Empty;
try
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Timeout = 20000; //超时时间
request.Method = "GET"; //请求方式
request.KeepAlive = true; //解决GetResponse操作超时问题
request.Headers.Add("Authorization", "token"); //如果接口需要鉴权, 把"token"换成自己需要的
//通过HttpWebRequest的GetResponse()方法建立HttpWebResponse,强制类型转换
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
//获取响应内容,返回的数据格式: {"status":"success","msg":"成功","data":{"info": "example"}}
string postContent = new StreamReader(response.GetResponseStream()).ReadToEnd();
//结果解析,异常情况判断
JObject json = JObject.Parse(postContent);
var gList = json["data"];
if (json["status"] == null || gList == null || json["msg"] == null)
error = "接口错误";
else if (json["status"].ToString() != "success")
error = string.Format("接口查询结果返回错误,{0}", json["msg"]);
else if (gList.ToString() != string.Empty)
result = gList["info"].ToString();
else { }
}
catch (Exception ex)
{
error = ex.Message;
}
if (error != string.Empty)
MessageBox.Show(error);
return result;
}
1.2请求参数可以用表单数据(键值对)拼接时
url为请求的接口地址,pairs为请求的参数(字典格式)
private string GetUrlEncodeData(string url, Dictionary<string, string> pairs)
{
string result = string.Empty;
string error = string.Empty;
try
{
StringBuilder sb = new StringBuilder();
foreach (string key in pairs.Keys)
sb.Append(key).Append("=").Append(pairs[key]).Append("&");
if (pairs.Count > 0)
url = url + "?" + sb.ToString().Trim('&');
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.ContentType = "application/x-www-form-urlencoded"; //表单数据(键值对)
request.Timeout = 20000; //超时时间
request.Method = "GET"; //请求方式
request.KeepAlive = true; //解决GetResponse操作超时问题
request.Headers.Add("Authorization", "token"); //如果接口需要鉴权, 把"token"换成自己需要的