public static async Task <WebAPIResult> ExecuteWebAPIRequest(HttpMethod httpMethod, string URL, string headerKeyName, string headerKeyValue, string contentBody = "", bool generateException = true) { var result = new WebAPIResult(); // Create the Http Request Message using (var request = new HttpRequestMessage(httpMethod, URL)) { // Add the access token and specify that the return value is required in JSON format request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); // For API Key based auth request.Headers.Add(headerKeyName, headerKeyValue); //If the contentBody != "", attach it if (contentBody != "") { request.Content = new StringContent(contentBody, Encoding.UTF8, "application/json"); request.Content.Headers.ContentLength = contentBody.Length; } using (var response = await HTTPConnection.SendAsync(request)) { result.ReponseCode = response.StatusCode; result.ReponseContent = await response.Content.ReadAsStringAsync(); } //Check to see if there are exceptions thrown from the Web API, thrown an exception //if (result.ReponseCode == HttpStatusCode.OK) return result; if (generateException && result.ReponseCode != HttpStatusCode.OK) { // Get the error details from the SAP message JObject errorInfo = JObject.Parse(result.ReponseContent); string errorCode = (string)errorInfo["error"]["statusCode"]; string errorMessage = (string)errorInfo["error"]["message"]; var error = new WebAPIException(errorCode, errorMessage); throw error; } else { return(result); } } }
public static async Task <WebAPIResult> ExecuteOAuthWebAPIRequest(HttpMethod httpMethod, string URL, string authBearerToken, string contentBody = "", bool generateException = true, string headerKeyName = null, string headerKeyValue = null) { //LoggerService.Debug("Sending request to API for URI: " + URL); var result = new WebAPIResult(); // Create the Http Request Message using (var request = new HttpRequestMessage(httpMethod, URL)) { // Add the access token and specify that the return value is required in JSON format request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); // For OAuth2, Bearer Token based APIs request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", authBearerToken); if (!string.IsNullOrEmpty(headerKeyName) && !string.IsNullOrEmpty(headerKeyValue)) { request.Headers.Add(headerKeyName, headerKeyValue); } //If the contentBody != "", attach it if (contentBody != "") { request.Content = new StringContent(contentBody, Encoding.UTF8, "application/json"); request.Content.Headers.ContentLength = contentBody.Length; } using (var response = await HTTPConnection.SendAsync(request)) { //LoggerService.Debug("Response Status: " + response.StatusCode); result.ReponseCode = response.StatusCode; result.ReponseContent = await response.Content.ReadAsStringAsync(); } //Check to see if there are exceptions thrown from the Web API, thrown an exception if (generateException && (result.ReponseCode != HttpStatusCode.OK) && (result.ReponseCode != HttpStatusCode.Created) && (result.ReponseCode != HttpStatusCode.NoContent)) { if (!string.IsNullOrEmpty(result.ReponseContent)) { //Default Values string errorCode = result.ReponseCode.ToString(); string errorMessage = result.ReponseContent; //Body may not be a valid json try { // Get the error details from the SAP message JObject errorInfo = JObject.Parse(result.ReponseContent); errorCode = (string)errorInfo["error"]["code"]; errorMessage = (string)errorInfo["error"]["message"]; } catch { } var error = new WebAPIException(errorCode, errorMessage); throw error; } else { throw new WebAPIException(result.ReponseCode.ToString(), result.ReponseCode.ToString()); } } } return(result); }