Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Import Macro Repair

Table of Contents

When writing clients in C# to consume the API, You can use the ServiceStack client (easy way) or use the .NET web client (harder way).

 

Using the ServiceStack Client

  1. Install the ServiceStackVS extension
  2. Add the nuget package ServiceStack.Client
  3. Add References to System.Runtime.Serialization and System.Net
  4. Right-click on the project and choose "Add ServiceStack Reference..."
  5. Enter the address of the host and name the service
  6. Add the following Code:

    Code Block
    languagec#
    titleUsing ServiceStack.Client
    // Authenticate
    var client = new ServiceStack.JsonServiceClient("http://api.jiwa.com.au");
    var authResponse = client.Send<ServiceStack.AuthenticateResponse>(new ServiceStack.Authenticate()
    {
    	provider = "credentials",
    	UserName = "api",
    	Password = "password",
    	RememberMe = true
    });
    
    // Read a debtor
    var serviceStackDebtorResponse = client.Get(new DebtorGetRequest { AccountNo = "1001" });

Using the .NET WebClient

  1. Add References to System.Runtime.Serialization and System.Net
  2. Add the nuget package Newtonsoft.Json
  3. Add a new class file to the project and paste the code from the code generator of the API - you can get this by clicking on the "Generate C#" link on the metadata page:
  4. Create a cookie aware WebClient using this code - this is needed to send the session Id with every request:

    Code Block
    languagec#
    titleCookie Aware WebClient
    public class CookieAwareWebClient : WebClient
    {
    	public CookieAwareWebClient()
    	{
    		CookieContainer = new CookieContainer();
    	}
    	public CookieContainer CookieContainer { get; private set; }
    
    	protected override WebRequest GetWebRequest(Uri address)
    	{
    		var request = (HttpWebRequest)base.GetWebRequest(address);
    		request.CookieContainer = CookieContainer;
    		return request;
    	}
    }
  5. Add the following code:

    Code Block
    languagec#
    titleUsing WebClient
    using (var webclient = new CookieAwareWebClient())
    {
        // Authenticate
    	var reqparm = new System.Collections.Specialized.NameValueCollection();
    	reqparm.Add("username", "api");
    	reqparm.Add("password", "password");
    	byte[] responsebytes = webclient.UploadValues("http://api.jiwa.com.au/auth", "POST", reqparm);
    	string responsebody = Encoding.UTF8.GetString(responsebytes);
    
    	ServiceStack.AuthenticateResponse webClientAuthResponse = Newtonsoft.Json.JsonConvert.DeserializeObject<ServiceStack.AuthenticateResponse>(responsebody);
    
    	// Read a debtor
    	responsebody = webclient.DownloadString("http://api.jiwa.com.au:80/debtor/1001");                
    	JiwaFinancials.Jiwa.JiwaServiceModel.DebtorGetResponse webClientDebtorGetResponse = Newtonsoft.Json.JsonConvert.DeserializeObject<JiwaFinancials.Jiwa.JiwaServiceModel.DebtorGetResponse>(responsebody);
    }

 

Filter by label (Content by label)
showLabelsfalse
max5
spacesAPI
showSpacefalse
sortmodified
reversetrue
typepage
cqllabel in ( "consume" , "c-sharp" , "restapi" ) and type = "page" and space = "J7UG"
labelsconsume c-sharp

Page Properties
hiddentrue
Related issues