很久没有写接口了,正好今天写到了接口,记录一下
封装Http Post请求,这里的请求头是 request.ContentType = “application/json”; 复制后根据实际去修改,不要生搬硬套搞拿来主义:
/// <summary>
/// 发送http请求,
/// </summary>
/// <param name="url"></param>
/// <param name="jsonParam"></param>
/// <returns></returns>
public static HttpWebResponse CreatePostHttpResponse(string url, string jsonParam)
{
HttpWebRequest request = null;
request = WebRequest.Create(url) as HttpWebRequest;
request.Proxy = null;
request.Method = "POST";
request.ContentType = "application/json";
byte[] data = Encoding.UTF8.GetBytes(jsonParam);
request.ContentLength = data.Length;
using (Stream stream = request.GetRequestStream())
{
stream.Write(data, 0, data.Length);
}
return request.GetResponse() as HttpWebResponse;
}
封装获取请求的数据的方法
public static string GetResponseString(HttpWebResponse webresponse)
{
using (Stream s = webresponse.GetResponseStream())
{
StreamReader reader = new StreamReader(s, Encoding.UTF8);
return reader.ReadToEnd();
}
}
封装反序列化时需要用到的class:
public class TextMsg
{
public int resultCode { get; set; }
public string resultMsg { get; set; }
public string resultMap { get; set; }
}
准备工作都做好了,实现接口吧
public IActionResult Text()
{
var time = DateTime.Now.ToString("yyyyMMddHHmmss");
//MD5加密
var sign =GetMD5_Utf8("nqk6E4LP********e5Qm" + time + "Kyw****NrU");
var phoneList = new List<string>();
phoneList.Add("152*******73");
phoneList.Add("155*******03");
var jsPhone = JsonConvert.SerializeObject(phoneList);
Dictionary<string, object> dic = new Dictionary<string, object>();
dic.Add("applicationId", "nqk****Rb");
dic.Add("password", "i7****Qm");
dic.Add("requestTime", time);
dic.Add("sign", sign);
dic.Add("funCode", "1002");
dic.Add("mobiles", phoneList);
dic.Add("content", "你好");
//序列化
var json = JsonConvert.SerializeObject(dic);
var res = GetResponseString(CreatePostHttpResponse("http://api.***********/batchSendMessage", json));
var result = JsonConvert.DeserializeObject<TextMsg>(res);
return Json(result);
}
接口返回内容:
ok,搞定。