前言:最近公司项目与外部api接口对接较多 ,写下自己的代码总结。介绍两种访问方式(HttpClient、HttpWebRequest)
一、HttpWebRequest 访问Api
private static string webPost(string url, string obj = null) { string param = (obj);//参数 byte[] bs = Encoding.Default.GetBytes(param); HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(url); req.Method = "POST"; req.ContentType = "application/json"; req.ContentLength = bs.Length; using (Stream reqStream = req.GetRequestStream()) { reqStream.Write(bs, 0, bs.Length); reqStream.Close(); HttpWebResponse response2 = (HttpWebResponse)req.GetResponse(); StreamReader sr2 = new StreamReader(response2.GetResponseStream(), Encoding.UTF8); string result = sr2.ReadToEnd(); return result; } }
二、HttpClient访问Api
/// <summary>
/// Get请求
/// </summary>
public string GetToken()
{
try { HttpClient myHttpClient = new HttpClient(); var urlstring = "https://oapi.dingtalk.com/gettoken?appkey=APPKEY&appsecret=APPSECRET"; urlstring = urlstring.Replace("APPKEY", appkey); urlstring = urlstring.Replace("APPSECRET", appsecret); HttpResponseMessage response = myHttpClient.GetAsync(urlstring).Result; var content = response.Content.ReadAsAsync<object>().Result; return content; } catch (Exception ex) { return ex.Message; } }
/// <summary> /// Post请求 /// </summary> public string getList(long unixstart, long unixend, int cursor, bool start) { try { HttpClient myHttpClient = new HttpClient(); var urlstring = "https://oapi.dingtalk.com/topapi/processinstance/listids?access_token=ACCESS_TOKEN"; urlstring = urlstring.Replace("ACCESS_TOKEN", access_token); var content = new FormUrlEncodedContent(new Dictionary<string, string>() { {"process_code",""}, {"start_time", }, {"end_time" ,}, {"size" ,"10"}, {"cursor" ,)} }); HttpResponseMessage response = myHttpClient.PostAsync(urlstring, content).Result; var jsonlist = response.Content.ReadAsAsync<object>().Result; return jsonlist; } catch (Exception ex) { return e.Message;
}
}
三、时间戳与DateTime互转
/// <summary> /// 将c# DateTime时间格式转换为Unix时间戳格式 /// </summary> /// <param name="time"></param> /// <returns></returns> public long ConvertDateTimeInt(DateTime time) { DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1, 0, 0, 0, 0)); long t = (time.Ticks - startTime.Ticks) / 10000; return t; } /// <summary> /// c# Unix时间戳格式转换成DateTime /// </summary> /// <param name="d"></param> /// <returns></returns> public System.DateTime ConvertIntDateTime(long d) { System.DateTime time = System.DateTime.MinValue; System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1)); time = startTime.AddMilliseconds(d); return time; }