ASP.NET日常开发随手记------关于http协议接口

HTTP接口目前接触到的有两种:

①.共同点:
模式相同,接口方法大致相同,
②.不同点:
传参方式不同
HttpWebRequest中的ContentType方法不同
键值对方式为:“application/x-www-form-urlencoded”
非键值对为: “application/json”;

1.接口请求体为键值对方式

键值对请求体样例:
在这里插入图片描述

Srv中先定义:

private static readonly string DefaultUserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)";

接口方法:

string url = "http://10.40.95.30/nwom/plugins/jswebservice/siteperformanceassess/assessResult.ilf"; --接口地址
string outData = "";
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
req.Method = "post";
req.ContentType = "application/x-www-form-urlencoded";
req.UserAgent = DefaultUserAgent;

Encoding requestEncoding = Encoding.GetEncoding("UTF-8");

string repData = JsonConvert.SerializeObject(opDetailList); --opDetailList为请求体

StringBuilder buffer = new StringBuilder();
buffer.AppendFormat("{0}={1}", "opDetail", repData); --opDetail为键(按照他的要求定义键),repData值(解析之后的请求体)

byte[] postData = requestEncoding.GetBytes(buffer.ToString());

using (Stream reqStream = req.GetRequestStream())
{
	reqStream.Write(postData, 0, postData.Length);
}

HttpWebResponse resp = (HttpWebResponse)req.GetResponse();

using (Stream stream = resp.GetResponseStream())
{
	using (StreamReader sr = new StreamReader(stream, Encoding.UTF8))
	{
		outData = sr.ReadToEnd();
	}
}

if (outData != null)
{

}

2.接口请求体非键值对

非键值对请求体样例:
"{
" alarmtitle \ ": [“基站退服”,“小区退服”],
\ "exResId \ ":[“2026413640”,“2031327029”],
\ "alarmnetype \ ":[“BTS”,“NodeB”],
\ "startEventTime\ ": 1542536234,
\ "endEventTime\ ": 1542709034
}"

接方法口:

UserNum un = new UserNum();
un.userName = userName;
un.password = passWord;
string repData = JsonConvert.SerializeObject(un);
byte[] postData = Encoding.UTF8.GetBytes(repData);
//ERP导入项目的API地址
string importProjectApiUrl = "http://10.40.9.185:60001/cloud/ailk-cms-ms-uac/auth";

string outData = "";
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(importProjectApiUrl);
req.Method = "post";
req.ContentType = "application/json";

using (Stream reqStream = req.GetRequestStream())
{
	reqStream.Write(postData, 0, postData.Length);
}

HttpWebResponse resp = (HttpWebResponse)req.GetResponse();

using (Stream stream = resp.GetResponseStream())
{
	using (StreamReader sr = new StreamReader(stream, Encoding.UTF8))
	{
		outData = sr.ReadToEnd();
	}
}

if (outData != null)
{
}

特殊实例:
接口方要求请求接口时带参数:
类似:
curl -XPOST -H ‘Content-Type:application/json;charset=utf-8’ -H ‘Authorization:eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJhY2Nfb2lkIjo0NzQsImFyZWFfbmFtZSI6ImFkbWluLmNvbSIsInN1YiI6ImNtcyIsInNwZWNpYWx0eSI6WzEsMiwzLDQsNSw2LDddLCJhY2NfbG9naW5uYW1lIjoiYWlsayIsImltc19waG9uZSI6IjE1MDYyMjA1NDk2IiwiYXJlYV9pZCI6MSwicm9sZV9uYW1lIjoiU1lTVEVNIiwiY2l0eV9uYW1lIjoi5rGf6IuP55yBIiwiY2l0eV9sYXllciI6MSwicm9sZV9pZCI6MSwiZXhwIjoxNTQ3ODA0MTk4LCJjaXR5X2lkIjoiMDAiLCJ0aW1lc3RhbXAiOjE1NDc4MDA1OTgwNDV9.I-MApLklxH4Zs3AGxWofwU3CLZpsFCFEY_knmrbqYVFuZbKnhHpZry3jzOXWa7aBoHbdLKz28ogIlIz9Y8OOCg’ ‘10.40.9.185:60001/cloud/ailk-cms-ms-alarmquery/size’ -d ‘{
“alarmtitle”:[“基站退服”,“小区退服”],
“exResId”:[“2026413640”,“2031327029”],
“alarmnetype”:[“BTS”,“NodeB”],
“startEventTime”:1542816000,
“endEventTime”:1542844800
}’
(绿色为请求参数中的键,红色为值,类似系统中处理页面的url?id=id)
只需要
HttpWebRequest req2 = (HttpWebRequest)WebRequest.Create(importProjectApiUrl2);
req2.Headers.Add(“Authorization”, Authorization); --前面的Authorization为上面标记中绿色部分,后面的Authorization为上方标记中红色部分

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

焦糖丨玛奇朵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值