private static async Task <(APIResult, LoginResponseDto)> LoginPostAsync(LoginRequestDto loginRequestDto) { APIResult apiResult; LoginResponseDto loginResponseDto = null; using (HttpClient client = new HttpClient()) { try { #region 準備開啟連線 string endPoint = $"https://localhost:5001/api/login"; HttpResponseMessage response = null; // Accept 用於宣告客戶端要求服務端回應的文件型態 (底下兩種方法皆可任選其一來使用) //client.DefaultRequestHeaders.Accept.TryParseAdd("application/json"); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); // Content-Type 用於宣告遞送給對方的文件型態 client.DefaultRequestHeaders.TryAddWithoutValidation("Content-Type", "application/json"); var JsonPayload = JsonConvert.SerializeObject(loginRequestDto); // https://msdn.microsoft.com/zh-tw/library/system.net.http.stringcontent(v=vs.110).aspx using (var fooContent = new StringContent(JsonPayload, Encoding.UTF8, "application/json")) { response = await client.PostAsync(endPoint, fooContent); } #endregion #region 處理呼叫完成 Web API 之後的回報結果 if (response != null) { if (response.IsSuccessStatusCode == true) { // 取得呼叫完成 API 後的回報內容 String strResult = await response.Content.ReadAsStringAsync(); apiResult = JsonConvert.DeserializeObject <APIResult>(strResult, new JsonSerializerSettings { MetadataPropertyHandling = MetadataPropertyHandling.Ignore }); loginResponseDto = JsonConvert.DeserializeObject <LoginResponseDto>(apiResult.Payload.ToString(), new JsonSerializerSettings { MetadataPropertyHandling = MetadataPropertyHandling.Ignore }); } else { apiResult = new APIResult { Status = false, Message = string.Format("Error Code:{0}, Error Message:{1}", response.StatusCode, response.RequestMessage), Payload = null, }; } } else { apiResult = new APIResult { Status = false, Message = $"應用程式呼叫 API ({endPoint}) 發生異常", Payload = null, }; } #endregion } catch (Exception ex) { apiResult = new APIResult { Status = false, Message = ex.Message, Payload = ex, }; } } return(apiResult, loginResponseDto); }
private static async Task <(APIResult, LoginResponseDto)> RefreshTokenAsync(string refreshToken) { APIResult apiResult; LoginResponseDto loginResponseDto = null; using (HttpClient client = new HttpClient()) { try { #region 準備開啟連線 string endPoint = $"https://localhost:5001/api/login/RefreshToken"; HttpResponseMessage response = null; client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", refreshToken); // Accept 用於宣告客戶端要求服務端回應的文件型態 (底下兩種方法皆可任選其一來使用) //client.DefaultRequestHeaders.Accept.TryParseAdd("application/json"); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); // Content-Type 用於宣告遞送給對方的文件型態 client.DefaultRequestHeaders.TryAddWithoutValidation("Content-Type", "application/json"); response = await client.GetAsync(endPoint); #endregion #region 處理呼叫完成 Web API 之後的回報結果 if (response != null) { if (response.IsSuccessStatusCode == true) { // 取得呼叫完成 API 後的回報內容 String strResult = await response.Content.ReadAsStringAsync(); apiResult = JsonConvert.DeserializeObject <APIResult>(strResult, new JsonSerializerSettings { MetadataPropertyHandling = MetadataPropertyHandling.Ignore }); loginResponseDto = JsonConvert.DeserializeObject <LoginResponseDto>(apiResult.Payload.ToString(), new JsonSerializerSettings { MetadataPropertyHandling = MetadataPropertyHandling.Ignore }); } else { apiResult = new APIResult { Status = false, Message = string.Format("Error Code:{0}, Error Message:{1}", response.StatusCode, response.RequestMessage), Payload = null, }; } } else { apiResult = new APIResult { Status = false, Message = $"應用程式呼叫 API ({endPoint}) 發生異常", Payload = null, }; } #endregion } catch (Exception ex) { apiResult = new APIResult { Status = false, Message = ex.Message, Payload = ex, }; } } return(apiResult, loginResponseDto); }