For a more in depth and other programming language samples, download the Sample Client Install
C# | ![]() |
---|---|
using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System; using System.Net; using System.Net.Http; using System.Text; namespace FaxWSConsoleApplication { class GetRealTimeFaxStatusExJsonClass { const string oauthUrl = "https://login.concord.net/v1/connect/token"; const string faxWSUrl = "https://ws.concordfax.com/fax/v5"; public void GetRealTimeFaxStatusExJson() { string methodName = "GetRealTimeFaxStatusExJson"; Console.WriteLine($"Starting call to {methodName}"); #region General Settings // Fill in with username string username = ""; // Fill in with password string password = ""; // Fill in with JobId to be cancelled string jobId = ""; #endregion General Settings #region OAuth 2.0 Settings string grantType = "password"; string scope = "FaxWS"; string faxWSClientId = "A9F528F9-0000-4B70-0000-078C23030424-ConcordApiFaxWS"; string faxWSClientSecret = ""; #endregion OAuth 2.0 Setup try { #region OAuth 2.0 Authentication AccessTokenRequest accessTokenRequest = null; AccessTokenResponse accessTokenResponse = null; TokenManager tokenManager = new TokenManager(oauthUrl); accessTokenRequest = new AccessTokenRequest( clientId: faxWSClientId, clientSecret: faxWSClientSecret, username: username, password: password, grantType: grantType, scope: scope, redirectUri: null, code: null, refreshToken: null, state: null); Console.WriteLine("Getting access token"); // Get an access token from Cache OR request one from the Identity Server accessTokenResponse = tokenManager.GetAccessToken(accessTokenRequest); if(accessTokenResponse == null) { Console.WriteLine("Failed to get an AccessToken, returned null"); return; } // Check to see if we failed to get an Access token via a Refresh token that has expired or been revoked, if so we need to re-authenticate if(accessTokenResponse.HttpStatusCode == HttpStatusCode.BadRequest && accessTokenResponse.Error == "invalid_grant") { Console.WriteLine("Refresh token expired, attempting to get a new Access Token"); accessTokenResponse = tokenManager.GetAccessToken(accessTokenRequest, ignoreCache: true); } if(accessTokenResponse.HttpStatusCode != HttpStatusCode.OK) { Console.WriteLine("AccessToken not valid, Error Code: {0}, Error Description: {1}", accessTokenResponse.Error, accessTokenResponse.ErrorDescription); return; } Console.WriteLine("Access token retrieved sucessfully"); #endregion OAuth 2.0 Authentication #region Request Setup // Sample Request //{ // "GetRealTimeFaxStatusEx": { // "UserID": "", // "strPIN": "", // "FaxJobIds": [ // { // "JobId": "" // } // ] // } //} // Create JSON request var json = new { GetRealTimeFaxStatusEx = new { UserID = username, strPIN = "", // Do not set password as using OAUTH FaxJobIds = new[] { new { JobId = jobId } } } }; // Serialize to JSON string {MethodName:{}} string content = JsonConvert.SerializeObject(json); // Create HttpContent object from JSON content and set content-type to application/json HttpContent httpContent = new StringContent(content, Encoding.UTF8, "application/json"); #endregion Request Setup #region API Call using(var client = new HttpClient()) { // Clear any existing headers client.DefaultRequestHeaders.Accept.Clear(); // Add Authorization Bearer OAuth 2.0 Token to header client.DefaultRequestHeaders.Add("Authorization", "Bearer " + accessTokenResponse.AccessToken); // Add Content-Type: application/json client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json")); Console.WriteLine($"Making API Call to {methodName}"); // Sent POST request HttpResponseMessage httpResponseMessage = client.PostAsync(new Uri(faxWSUrl), httpContent).GetAwaiter().GetResult(); Console.WriteLine("Reading API Call Response content"); // Get JSON body content from response string responseContent = httpResponseMessage.Content.ReadAsStringAsync().GetAwaiter().GetResult(); // Check to see if Http Status Code was successful if(!httpResponseMessage.IsSuccessStatusCode) { Console.WriteLine($"Http Error Returned, Status Code: {httpResponseMessage.StatusCode}, Reason Phrase: {httpResponseMessage.ReasonPhrase}"); Console.WriteLine($"Response Content:{responseContent}"); return; } JObject jsonResult = null; try { // Parse JSON string to Json Object that will help parse response jsonResult = JObject.Parse(responseContent); } catch(JsonReaderException ex) { Console.WriteLine(ex.Message); } // Write JSON response out Console.WriteLine($"Json Response: {jsonResult.ToString()}"); // SAMPLE RESPONSE //{ // "GetRealTimeFaxStatusExResponse": { // "return": true, // "FaxStatusList": [ // { // "FaxJobId": "", // "FaxJobStatusId": 0, // "StatusDescription": "", // "RecipientState": 0, // "RecipientCurrentPageCount": 0, // "RecipientTotalPageCount": 0, // "FaxDeliveryDateTime": "", // "FaxDeliveryDuration": 0, // "RemoteFaxCSID": "", // "Error": { // "ErrorCode": 0, // "ErrorString": "Success" // } // } // ], // "WSError": { // "ErrorCode": 0, // "ErrorString": "Success" // // } // } //} // Get response portion // Serialize to JSON string {CancelFaxResponse:{}} var response = jsonResult["GetRealTimeFaxStatusExResponse"]; // Get API call status bool success = response["return"].Value<bool>(); // See if method call was considered successful // If not then output detail from WSError object and RAW JSON response if(!success) { var wsError = response["WSError"]; var errorCode = wsError["ErrorCode"].Value<int>(); var errorString = wsError["ErrorString"].Value<string>(); Console.WriteLine($"ErrorCode: {errorCode}, ErrorString:{errorString}"); return; } // API Call was successful, echo back JobId that was cancelled Console.WriteLine($"Successfully retrieved status, looping over results"); var faxStatusList = response["FaxStatusList"]; foreach(var faxStatus in faxStatusList) { var faxJobId = faxStatus["FaxJobId"].Value<string>(); var faxJobStatusId = faxStatus["FaxJobStatusId"].Value<int>(); var statusDescription = faxStatus["StatusDescription"].Value<string>(); var recipientState = faxStatus["RecipientState"].Value<int>(); var recipientCurrentPageCount = faxStatus["RecipientCurrentPageCount"].Value<int>(); var recipientTotalPageCount = faxStatus["RecipientTotalPageCount"].Value<int>(); var faxDeliveryDateTime = faxStatus["FaxDeliveryDateTime"].Value<string>(); var faxDeliveryDuration = faxStatus["FaxDeliveryDuration"].Value<int>(); var remoteFaxCSID = faxStatus["RemoteFaxCSID"].Value<string>(); var error = faxStatus["Error"]; var errorCode = error["ErrorCode"].Value<int>(); var errorString = error["ErrorString"].Value<string>(); Console.WriteLine($"JobId: {faxJobId}, StatusId: {faxJobStatusId}, StatusDescription: {statusDescription}"); Console.WriteLine($"RecipientState: {recipientState}, RecipientCurrentPageCount: {recipientCurrentPageCount}, RecipientTotalPageCount: {recipientTotalPageCount}"); Console.WriteLine($"FaxDeliveryDateTime: {faxDeliveryDateTime}, FaxDeliveryDuration: {faxDeliveryDuration}, RemoteFaxCSID: {remoteFaxCSID}"); Console.WriteLine($"ErrorCode: {errorCode}, ErrorString: {errorString}"); } } #endregion API Call } catch(Exception ex) { Console.WriteLine($"Error while calling {methodName} : {ex.Message}"); } finally { Console.WriteLine($"Finished call to {methodName}"); } } } } |