以京训钉开发平台接口文档为例,使用HttpClient类请求调用其接口,对数据进行增删改查等操作。
文档地址:https://www.yuque.com/bjjnts/jxd/bo1osz
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using System.Web.Caching;
namespace JxdService
{
public class JxdService
{
private static HttpClient httpClient;
static JxdService()
{
httpClient = new HttpClient();
httpClient.BaseAddress = new Uri("https://openapi.bjjnts.cn");
//httpClient.DefaultRequestHeaders.Add("Authorization", "xxxxxxxx");
}
public static object _tokenLocker = new object();
public static Token Token
{
get
{
lock (_tokenLocker)
{
var cache = new Cache();
var token = cache.Get("jxd_token") as Token;
if (token == null)
{
token = GetToken();
cache.Insert("jxd_token", token, null, DateTime.Now.AddSeconds(token.expires_in - 10 * 60), Cache.NoSlidingExpiration);
}
return token;
}
}
}
/// <summary>
/// 获取Token
/// </summary>
/// <returns></returns>
public static Token GetToken()
{
HttpContent content = new StringContent("{\"app_key\":\"YGnTIDznnAdS9bYf\", \"app_secret\":\"lxFboer5sxUlpFTDpHLdLU8mlkWabLYy\"}", Encoding.UTF8, "application/json");
var httpResponse = httpClient.PostAsync("/token", content).Result;
var result = "";
if (httpResponse.StatusCode == System.Net.HttpStatusCode.OK)
{
result = httpResponse.Content.ReadAsStringAsync().Result;
}
if (string.IsNullOrWhiteSpace(result))
{
return null;
}
var token = JsonHelper.Deserializer<Token>(result);
return token;
}
/// <summary>
/// 清除Token
/// </summary>
private static void ClearToken()
{
var cache = new Cache();
cache.Remove("jxd_token");
}
/// <summary>
/// 获取课程资源
/// </summary>
/// <returns></returns>
public static List<CourseInfo> GetCoruses(CourseInfo where)
{
var token = Token;
httpClient.DefaultRequestHeaders.Remove("Authorization");
httpClient.DefaultRequestHeaders.Add("Authorization", #34;{token.token_type} {token.access_token}");
var httpResponse = httpClient.GetAsync("/courses?title=" + where.title).Result;
//校验Token是否有效
if (httpResponse.StatusCode == System.Net.HttpStatusCode.Unauthorized)
{
ClearToken();
return GetCoruses(where);
}
var result = "";
if (httpResponse.StatusCode == System.Net.HttpStatusCode.OK)
{
result = httpResponse.Content.ReadAsStringAsync().Result;
}
if (string.IsNullOrWhiteSpace(result))
{
return null;
}
return JsonHelper.Deserializer<List<CourseInfo>>(result);
}
/// <summary>
/// 获取课程资源
/// </summary>
/// <returns></returns>
public static CourseInfo GetCoruse(int id)
{
var token = Token;
httpClient.DefaultRequestHeaders.Remove("Authorization");
httpClient.DefaultRequestHeaders.Add("Authorization", #34;{token.token_type} {token.access_token}");
var httpResponse = httpClient.GetAsync(#34;/courses/{id}").Result;
//校验Token是否有效
if (httpResponse.StatusCode == System.Net.HttpStatusCode.Unauthorized)
{
ClearToken();
return GetCoruse(id);
}
var result = "";
if (httpResponse.StatusCode == System.Net.HttpStatusCode.OK)
{
result = httpResponse.Content.ReadAsStringAsync().Result;
}
if (string.IsNullOrWhiteSpace(result))
{
return null;
}
return JsonHelper.Deserializer<CourseInfo>(result);
}
/// <summary>
/// 添加课程资源
/// </summary>
/// <returns></returns>
public static CourseInfo AddCoruse(CourseVm course)
{
var token = Token;
httpClient.DefaultRequestHeaders.Remove("Authorization");
httpClient.DefaultRequestHeaders.Add("Authorization", #34;{token.token_type} {token.access_token}");
var data = JsonHelper.SerializeObject(new { course.title, course.image, course.job_id, course.copyright_id, course.content, course.cost_price });
var httpResponse = httpClient.PostAsync("/courses", new StringContent(data, Encoding.UTF8, "application/json")).Result;
//校验Token是否有效
if (httpResponse.StatusCode == System.Net.HttpStatusCode.Unauthorized)
{
ClearToken();
return AddCoruse(course);
}
var result = "";
if (httpResponse.StatusCode == System.Net.HttpStatusCode.Created)
{
result = httpResponse.Content.ReadAsStringAsync().Result;
}
if (string.IsNullOrWhiteSpace(result))
{
return null;
}
return JsonHelper.Deserializer<CourseInfo>(result);
}
/// <summary>
/// 修改课程
/// </summary>
/// <returns></returns>
public static CourseInfo EidtCoruse(CourseVm course)
{
var token = Token;
httpClient.DefaultRequestHeaders.Remove("Authorization");
httpClient.DefaultRequestHeaders.Add("Authorization", #34;{token.token_type} {token.access_token}");
var data = JsonHelper.SerializeObject(new { course.title, course.image, course.job_id, course.copyright_id, course.content, course.cost_price });
var httpResponse = httpClient.PutAsync(#34;/courses/{course.id}", new StringContent(data, Encoding.UTF8, "application/json")).Result;
//校验Token是否有效
if (httpResponse.StatusCode == System.Net.HttpStatusCode.Unauthorized)
{
ClearToken();
return EidtCoruse(course);
}
var result = "";
if (httpResponse.StatusCode == System.Net.HttpStatusCode.OK)
{
result = httpResponse.Content.ReadAsStringAsync().Result;
}
if (string.IsNullOrWhiteSpace(result))
{
return null;
}
return JsonHelper.Deserializer<CourseInfo>(result);
}
/// <summary>
/// 删除课程
/// </summary>
/// <returns></returns>
public static bool DelCoruse(int courseId)
{
var token = Token;
httpClient.DefaultRequestHeaders.Remove("Authorization");
httpClient.DefaultRequestHeaders.Add("Authorization", #34;{token.token_type} {token.access_token}");
var httpResponse = httpClient.DeleteAsync(#34;/courses/{courseId}").Result;
//校验Token是否有效
if (httpResponse.StatusCode == System.Net.HttpStatusCode.Unauthorized)
{
ClearToken();
return DelCoruse(courseId);
}
return httpResponse.StatusCode == System.Net.HttpStatusCode.NoContent;
}
}
}