5.6.1 Update Shipment Weight (C#)
Update Shipment Weight
Sample source code to update shipment weight (requires Newtonsoft.JSON from NuGet)
using System;
using System.Collections.Generic;
using System.IO;
using System.Net;
using Newtonsoft.Json;
namespace PrinshipShipment
{
public class ShipmentWeight
{
public ShipmentWeight(string hawbno, float newWeight)
{
HawbNo = hawbno;
ActualWeight = newWeight;
}
public string HawbNo { get; set; }
public float ActualWeight { get; set; }
}
public class ShipmentWeightRequest
{
public ShipmentWeightRequest()
{
ShipmentsWeight = new List<ShipmentWeight>();
}
public List<ShipmentWeight> ShipmentsWeight { get; set; }
}
public class APIHelper
{
const string PRODUCTION_URL = "https://apiv2.unixus.com.my/";
const string SANDBOX_URL = "https://sandbox-apiv2.unixus.com.my/";
const string myRefreshToken = "88888888";
static string api_url = SANDBOX_URL;
public static string GetAccessToken()
{
var httpWebRequest = (HttpWebRequest)WebRequest.Create(api_url + "Token/Refresh");
httpWebRequest.ContentType = "application/json";
httpWebRequest.Method = "POST";
using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
{
string json = "{ 'RefreshToken' : '" + myRefreshToken + "'}'";
streamWriter.Write(json);
streamWriter.Flush();
streamWriter.Close();
}
var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
var token = "";
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
try
{
string result = streamReader.ReadToEnd();
dynamic obj = JsonConvert.DeserializeObject<object>(result);
token = obj.AccessToken;
}
catch (System.Exception ex)
{
Console.WriteLine(string.Format("Error occurred getting AccessToken: {0}", ex.Message));
}
}
return token;
}
public static void UpdateShipmentWeight(ShipmentWeightRequest weightsRequest)
{
try
{
var httpWebRequest = (HttpWebRequest)WebRequest.Create(api_url + "shipment/v2/UpdateWeight");
httpWebRequest.ContentType = "application/json";
httpWebRequest.Headers.Add("X-Version", "1");
httpWebRequest.Headers.Add("Authorization", "Bearer " + GetAccessToken());
httpWebRequest.Method = "POST";
using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
{
string json = JsonConvert.SerializeObject(weightsRequest);
Console.WriteLine(json);
streamWriter.Write(json);
streamWriter.Flush();
streamWriter.Close();
}
var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
var result = "";
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
result = streamReader.ReadToEnd();
}
dynamic obj = JsonConvert.DeserializeObject<object>(result);
if (obj.Summary.Success > 1)
{
// Successful
Console.WriteLine("Successfully updated weights");
}
else
{
// Failed, print error
Console.WriteLine("Print Shipment Failed");
foreach (dynamic err in obj.Errors)
{
Console.WriteLine(string.Format("Error Message: {0}", err.ErrorMessage));
}
}
}
catch (Exception ex)
{
Console.WriteLine(string.Format("Error occurred Updating Shipment Weights: {0}", ex.Message));
}
}
}
class Program
{
static void Main(string[] args)
{
ShipmentWeightRequest reqObj = new ShipmentWeightRequest();
ShipmentWeight wgt1 = new ShipmentWeight("458040010620581", 0.7f);
reqObj.ShipmentsWeight.Add(wgt1);
ShipmentWeight wgt2 = new ShipmentWeight("458040010620566", 1.4f);
reqObj.ShipmentsWeight.Add(wgt2);
APIHelper.UpdateShipmentWeight(reqObj);
Console.ReadLine();
}
}
}