Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  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" });

...

  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);
    }

...