在涉及到获取第三方数据的时候都会涉及到调用接口,小编为此也是搜索了很长一段时间呢!https://www.cnblogs.com/BOSET/p/7089284.html这是小编参考的一份很完善的C#调用接口的博客,下面主要贴上小编主要使用的参考代码
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Web;
namespace WebApplication1
{
public class RestClient
{
private string BaseUri;
public RestClient(string baseUri)
{
this.BaseUri = baseUri;
}
#region Post请求
public string Post(string data, string uri)
{
//先根据用户请求的uri构造请求地址
string serviceUrl = string.Format("{0}/{1}", this.BaseUri, uri);
//创建Web访问对象
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(serviceUrl);
//把用户传过来的数据转成“UTF-8”的字节流
byte[] buf = System.Text.Encoding.GetEncoding("UTF-8").GetBytes(data);
myRequest.Method = "POST";
myRequest.ContentLength = buf.Length;
myRequest.ContentType = "application/json";
myRequest.MaximumAutomaticRedirections = 1;
myRequest.AllowAutoRedirect = true;
//发送请求
Stream stream = myRequest.GetRequestStream();
stream.Write(buf,0,buf.Length);
stream.Close();
//获取接口返回值
//通过Web访问对象获取响应内容
HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
//通过响应内容流创建StreamReader对象,因为StreamReader更高级更快
StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);
//string returnXml = HttpUtility.UrlDecode(reader.ReadToEnd());//如果有编码问题就用这个方法
string returnXml = reader.ReadToEnd();//利用StreamReader就可以从响应内容从头读到尾
reader.Close();
myResponse.Close();
return returnXml;
}
#endregion
}
}
下面开始贴小编的代码
<div>
<input id="StartTime" class="easyui-datebox" data-options="required:true,showSeconds:false" value="" style="width: 120px" />
<input id="EndTime" class="easyui-datebox" data-options="required:true,showSeconds:false" value="" style="width: 120px" />
<a href="#" class="easyui-linkbutton" id="btnGetAttendanceData" iconcls="icon-cog_go"> 获取考勤数据 </a>
</div>
<script>
function ChangeDateFormat(cellval) {
var str = cellval;//PHP中对应的UNIX时间戳为1223559328
var new_str = str.replace(/:/g, '-');
new_str = new_str.replace(/ /g, '-');
var arr = new_str.split("-");
var datum = new Date(Date.UTC(arr[0], arr[1] - 1, arr[2], arr[3] - 8, arr[4], arr[5]));
//var datum = new Date(datum.getTime());
return datum.getTime()/1000;
}
$('#btnGetAttendanceData').click(function () {
var starttime = ChangeDateFormat($("#StartTime").datebox("getValue") + ' 00:00:00');
var endtime = ChangeDateFormat($("#EndTime").datebox("getValue") + ' 23:59:59');
$.ajax({
url: 'Api.aspx?method=GetAttendanceData',
type: 'post',
dateType: 'json',
data: { starttime: starttime, endtime: endtime },
success: function (su) {
var result = eval('(' + su + ')');
if (result.Result == true) {
}
else { }
}
});
})
/// <summary>
/// 获取考勤打卡数据
/// </summary>
public void GetAttendanceData()
{
ErrMessage msg = new ErrMessage();
msg.Message = "";
msg.Result = true;
body rt = new body();
rt.opencheckindatatype = 3;
rt.starttime = Convert.ToInt32(Request["starttime"]);
rt.endtime = Convert.ToInt32(Request["endtime"]);
List<string> data = new List<string>() { "用户ID","用户ID2" };
rt.useridlist = data;
string json = JsonConvert.SerializeObject(rt);
string token = Common.GetWeixinQYToken("企业ID", "打卡的secret");
string serviceAddress = string.Format("https://qyapi.weixin.qq.com/cgi-bin/checkin/getcheckindata?access_token={0}&body={1}", token, json);
//先根据用户请求的uri构造请求地址
string serviceUrl = string.Format("https://qyapi.weixin.qq.com/cgi-bin/checkin/getcheckindata?access_token={0}&body={1}", token, json);
//创建Web访问对象
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(serviceUrl);
//把用户传过来的数据转成“UTF-8”的字节流
byte[] buf = System.Text.Encoding.GetEncoding("UTF-8").GetBytes(json);
myRequest.Method = "POST";
myRequest.ContentLength = buf.Length;
myRequest.ContentType = "application/json";
myRequest.MaximumAutomaticRedirections = 1;
myRequest.AllowAutoRedirect = true;
//发送请求
Stream stream = myRequest.GetRequestStream();
stream.Write(buf, 0, buf.Length);
stream.Close();
//获取接口返回值
//通过Web访问对象获取响应内容
HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
//通过响应内容流创建StreamReader对象,因为StreamReader更高级更快
StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);
//string returnXml = HttpUtility.UrlDecode(reader.ReadToEnd());//如果有编码问题就用这个方法
string returnXml = reader.ReadToEnd();//利用StreamReader就可以从响应内容从头读到尾
reader.Close();
myResponse.Close();
msg.Message = "成功获取数据!";
//返回处理结果
string res = JSON.Encode(msg);
Response.Write(res);
Response.End();
}