public static async Task <BatchGetMaterialsJson> BatchGetMaterials(string accessToken, string materialType, int offset, int count) { string api = "http://api.weixin.qq.com/cgi-bin/material/batchget_material?access_token=ACCESSTOKEN"; api = api.Replace("ACCESSTOKEN", accessToken); var content = new { type = materialType, offset = offset, count = count }.ToJson(); var requestMessage = new HttpRequestMessage(HttpMethod.Post, api); requestMessage.Content = new StringContent(content); var client = new HttpClient(); var response = await client.SendAsync(requestMessage); if (!response.IsSuccessStatusCode) { //Logger.LogError($"An error occurred while retrieving the user profile: the remote server returned a {response.StatusCode} response with the following payload: {response.Headers.ToString()} {await response.Content.ReadAsStringAsync()}"); throw new HttpRequestException("An error occured while retrieving the user profile."); } var responseString = await response.Content.ReadAsStringAsync(); var payload = JsonDocument.Parse(responseString); int errorCode = WeixinApiHelper.GetErrorCode(payload); if (errorCode != 0) { var errorMessage = WeixinApiHelper.GetErrorMessage(payload); //Logger.LogError($"The remote server returned an error while retrieving the user profile. {errorCode} {errorMessage}"); throw new Exception($"The remote server returned an error while retrieving the user profile. {errorCode} {errorMessage}"); } var result = responseString.FromJson <BatchGetMaterialsJson>(); return(result); }
public static async Task <MaterialCountJson> GetMaterialCount(string accessToken) { string api = "http://api.weixin.qq.com/cgi-bin/material/get_materialcount?access_token=ACCESSTOKEN"; api = api.Replace("ACCESSTOKEN", accessToken); var client = new HttpClient(); var response = await client.GetAsync(api); if (!response.IsSuccessStatusCode) { //Logger.LogError($"An error occurred while retrieving the user profile: the remote server returned a {response.StatusCode} response with the following payload: {response.Headers.ToString()} {await response.Content.ReadAsStringAsync()}"); throw new HttpRequestException("An error occured while retrieving the user profile."); } var payload = JsonDocument.Parse(await response.Content.ReadAsStringAsync()); int errorCode = WeixinApiHelper.GetErrorCode(payload); if (errorCode != 0) { var errorMessage = WeixinApiHelper.GetErrorMessage(payload); //Logger.LogError($"The remote server returned an error while retrieving the user profile. {errorCode} {errorMessage}"); throw new Exception($"The remote server returned an error while retrieving the user profile. {errorCode} {errorMessage}"); } int voiceCount, videoCount, imageCount, newsCount; if (MediaApiHelper.GetAllCounts(payload, out voiceCount, out videoCount, out imageCount, out newsCount)) { return(new MaterialCountJson { VoiceCount = voiceCount, VideoCount = videoCount, ImageCount = imageCount, NewsCount = newsCount }); } throw new Exception($"The remote server returned an unknown formatted string while retrieving the count of materials."); }