Below is an end-to-end example of submitting a ExtractBarcode request using C# programming language:
// Simple program to make and process the results of an ExtractBarcode request to the LEADTOOLS CloudServices.
// In order to run this program, the following changes will need to be added:
// 1) Place your Application ID in the AppId variable in the InitClient method.
// 2) Place your Application Password in the Password variable in the InitClient method.
//
// The program will perform the following operations in order:
// 1)Perform an ExtractBarcode request to the LEADTOOLS CloudServices. A successfully made request will return a unique identifier.
// 2)We will then query the services using the GUID -- if the file is finished processing, the body will contain all the
// request data.
// 3)We will take the json data that was returned, parse it, and display all the information that was returned.
//
// This program makes use of the following NuGet Packages:
// 1) Newtonsoft.Json
using System;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Net;
using System.Net.Http;
using System.Net.Http.Headers;
using Newtonsoft.Json.Linq;
namespace Azure_Code_Snippets.Tutorial_Code
{
class CloudServices_ExtractBarcode
{
private string hostedServicesUrl = "https://azure.leadtools.com/api/";
public async Task ExtractBarcode()
{
var client = InitClient();
//The first page in the file to mark for processing
int firstPage = 1;
//Sending a value of -1 will indicate to the service that all pages in the file should be processed.
int lastPage = -1;
// If using URL to the file
string fileURL = "http://demo.leadtools.com/images/cloud_samples/barcode_sample.tif";
string recognitionUrl = string.Format("Recognition/ExtractBarcode?firstPage={0}&lastPage={1}&fileurl={2}", firstPage, lastPage, fileURL);
var result = await client.PostAsync(recognitionUrl, null);
/*
//If uploading a file as multi-part content:
HttpContent byteContent = new ByteArrayContent(File.ReadAllBytes(@@"path/to/file"));
byteContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("form-data")
{
Name = "attachment",
FileName = "file-name"
};
var formData = new MultipartFormDataContent();
formData.Add(byteContent, "formFieldName");
string recognitionUrl = string.Format("Recognition/ExtractBarcode?firstPage={0}&lastPage={1}", firstPage, lastPage);
var result = await client.PostAsync(recognitionUrl, formData);
formData.Dispose();
*/
if (result.StatusCode == HttpStatusCode.OK)
{
//Unique ID returned by the services
string id = await result.Content.ReadAsStringAsync();
Console.WriteLine("Unique ID returned by the services: " + id);
await Query(id, client);
}
else
Console.WriteLine("Request failed with the following response: " + result.StatusCode);
}
private async Task Query(string id, HttpClient client)
{
string queryUrl = string.Format("Query?id={0}", id.ToString());
var result = await client.PostAsync(queryUrl, null);
var returnedContent = await result.Content.ReadAsStringAsync();
var returnedData = JObject.Parse(returnedContent);
int fileStatus = (int)returnedData.SelectToken("FileStatus");
if ( fileStatus == 100 || fileStatus == 123)
{
//The file is still being processed -- we will sleep the current thread for 5 seconds before trying again.
await Task.Delay(5000);
await Query(id, client);
return;
}
Console.WriteLine("File has finished processing with return code: " + returnedData.SelectToken("FileStatus"));
if ((int)returnedData.SelectToken("FileStatus") != 200)
return;
ParseJson(returnedData.SelectToken("RequestData").ToString());
}
private void ParseJson(string json)
{
JArray array = JArray.Parse(json);
foreach (var requestReturn in array)
{
Console.WriteLine("Service Type: " + requestReturn.SelectToken("ServiceType"));
var subArray = JArray.Parse(requestReturn.SelectToken("data").ToString());
Console.WriteLine("Returned Data:");
foreach (var obj in subArray)
{
var subObj = (JObject)obj;
foreach (var entry in subObj)
Console.WriteLine(entry.Key.ToString() + ": " + entry.Value.ToString());
Console.WriteLine("------------------------------------");
}
}
}
private HttpClient InitClient()
{
string AppId = "Replace with Application ID";
string Password = "Replace with Application Password";
HttpClient client = new HttpClient();
client.BaseAddress = new Uri(hostedServicesUrl);
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
string authData = string.Format("{0}:{1}", AppId, Password);
string authHeaderValue = Convert.ToBase64String(Encoding.UTF8.GetBytes(authData));
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", authHeaderValue);
return client;
}
}
}
Note: This example uses the following additional third-party libraries: Newtonsoft.Json.