Sample code for 30+ languages & platforms
Objective-C

UPS Rate Request

See more UPS Examples

Simple UPS Rate Example

Chilkat Objective-C Downloads

Objective-C
#import <CkoHttp.h>
#import <CkoJsonObject.h>
#import <CkoHttpResponse.h>
#import <CkoStringBuilder.h>
#import <NSString.h>

BOOL success = NO;

//  This example assumes the Chilkat API to have been previously unlocked.
//  See Global Unlock Sample for sample code.

CkoHttp *http = [[CkoHttp alloc] init];

//  Use this online tool to generate code from sample JSON:
//  Generate Code to Create JSON

//  The following JSON is sent in the request body.

//  {
//    "RateRequest": {
//      "Request": {
//        "TransactionReference": {
//          "CustomerContext": "CustomerContext"
//        }
//      },
//      "Shipment": {
//        "Shipper": {
//          "Name": "ShipperName",
//          "ShipperNumber": "ShipperNumber",
//          "Address": {
//            "AddressLine": [
//              "ShipperAddressLine",
//              "ShipperAddressLine",
//              "ShipperAddressLine"
//            ],
//            "City": "TIMONIUM",
//            "StateProvinceCode": "MD",
//            "PostalCode": "21093",
//            "CountryCode": "US"
//          }
//        },
//        "ShipTo": {
//          "Name": "ShipToName",
//          "Address": {
//            "AddressLine": [
//              "ShipToAddressLine",
//              "ShipToAddressLine",
//              "ShipToAddressLine"
//            ],
//            "City": "Alpharetta",
//            "StateProvinceCode": "GA",
//            "PostalCode": "30005",
//            "CountryCode": "US"
//          }
//        },
//        "ShipFrom": {
//          "Name": "ShipFromName",
//          "Address": {
//            "AddressLine": [
//              "ShipFromAddressLine",
//              "ShipFromAddressLine",
//              "ShipFromAddressLine"
//            ],
//            "City": "TIMONIUM",
//            "StateProvinceCode": "MD",
//            "PostalCode": "21093",
//            "CountryCode": "US"
//          }
//        },
//        "PaymentDetails": {
//          "ShipmentCharge": {
//            "Type": "01",
//            "BillShipper": {
//              "AccountNumber": "ShipperNumber"
//            }
//          }
//        },
//        "Service": {
//          "Code": "03",
//          "Description": "Ground"
//        },
//        "NumOfPieces": "1",
//        "Package": {
//          "PackagingType": {
//            "Code": "02",
//            "Description": "Packaging"
//          },
//          "Dimensions": {
//            "UnitOfMeasurement": {
//              "Code": "IN",
//              "Description": "Inches"
//            },
//            "Length": "5",
//            "Width": "5",
//            "Height": "5"
//          },
//          "PackageWeight": {
//            "UnitOfMeasurement": {
//              "Code": "LBS",
//              "Description": "Pounds"
//            },
//            "Weight": "1"
//          }
//        }
//      }
//    }
//  }

CkoJsonObject *json = [[CkoJsonObject alloc] init];
[json UpdateString: @"RateRequest.Request.TransactionReference.CustomerContext" value: @"CustomerContext"];
[json UpdateString: @"RateRequest.Shipment.Shipper.Name" value: @"ShipperName"];
[json UpdateString: @"RateRequest.Shipment.Shipper.ShipperNumber" value: @"ShipperNumber"];
[json UpdateString: @"RateRequest.Shipment.Shipper.Address.AddressLine[0]" value: @"ShipperAddressLine"];
[json UpdateString: @"RateRequest.Shipment.Shipper.Address.AddressLine[1]" value: @"ShipperAddressLine"];
[json UpdateString: @"RateRequest.Shipment.Shipper.Address.AddressLine[2]" value: @"ShipperAddressLine"];
[json UpdateString: @"RateRequest.Shipment.Shipper.Address.City" value: @"TIMONIUM"];
[json UpdateString: @"RateRequest.Shipment.Shipper.Address.StateProvinceCode" value: @"MD"];
[json UpdateString: @"RateRequest.Shipment.Shipper.Address.PostalCode" value: @"21093"];
[json UpdateString: @"RateRequest.Shipment.Shipper.Address.CountryCode" value: @"US"];
[json UpdateString: @"RateRequest.Shipment.ShipTo.Name" value: @"ShipToName"];
[json UpdateString: @"RateRequest.Shipment.ShipTo.Address.AddressLine[0]" value: @"ShipToAddressLine"];
[json UpdateString: @"RateRequest.Shipment.ShipTo.Address.AddressLine[1]" value: @"ShipToAddressLine"];
[json UpdateString: @"RateRequest.Shipment.ShipTo.Address.AddressLine[2]" value: @"ShipToAddressLine"];
[json UpdateString: @"RateRequest.Shipment.ShipTo.Address.City" value: @"Alpharetta"];
[json UpdateString: @"RateRequest.Shipment.ShipTo.Address.StateProvinceCode" value: @"GA"];
[json UpdateString: @"RateRequest.Shipment.ShipTo.Address.PostalCode" value: @"30005"];
[json UpdateString: @"RateRequest.Shipment.ShipTo.Address.CountryCode" value: @"US"];
[json UpdateString: @"RateRequest.Shipment.ShipFrom.Name" value: @"ShipFromName"];
[json UpdateString: @"RateRequest.Shipment.ShipFrom.Address.AddressLine[0]" value: @"ShipFromAddressLine"];
[json UpdateString: @"RateRequest.Shipment.ShipFrom.Address.AddressLine[1]" value: @"ShipFromAddressLine"];
[json UpdateString: @"RateRequest.Shipment.ShipFrom.Address.AddressLine[2]" value: @"ShipFromAddressLine"];
[json UpdateString: @"RateRequest.Shipment.ShipFrom.Address.City" value: @"TIMONIUM"];
[json UpdateString: @"RateRequest.Shipment.ShipFrom.Address.StateProvinceCode" value: @"MD"];
[json UpdateString: @"RateRequest.Shipment.ShipFrom.Address.PostalCode" value: @"21093"];
[json UpdateString: @"RateRequest.Shipment.ShipFrom.Address.CountryCode" value: @"US"];
[json UpdateString: @"RateRequest.Shipment.PaymentDetails.ShipmentCharge.Type" value: @"01"];
[json UpdateString: @"RateRequest.Shipment.PaymentDetails.ShipmentCharge.BillShipper.AccountNumber" value: @"ShipperNumber"];
[json UpdateString: @"RateRequest.Shipment.Service.Code" value: @"03"];
[json UpdateString: @"RateRequest.Shipment.Service.Description" value: @"Ground"];
[json UpdateString: @"RateRequest.Shipment.NumOfPieces" value: @"1"];
[json UpdateString: @"RateRequest.Shipment.Package.PackagingType.Code" value: @"02"];
[json UpdateString: @"RateRequest.Shipment.Package.PackagingType.Description" value: @"Packaging"];
[json UpdateString: @"RateRequest.Shipment.Package.Dimensions.UnitOfMeasurement.Code" value: @"IN"];
[json UpdateString: @"RateRequest.Shipment.Package.Dimensions.UnitOfMeasurement.Description" value: @"Inches"];
[json UpdateString: @"RateRequest.Shipment.Package.Dimensions.Length" value: @"5"];
[json UpdateString: @"RateRequest.Shipment.Package.Dimensions.Width" value: @"5"];
[json UpdateString: @"RateRequest.Shipment.Package.Dimensions.Height" value: @"5"];
[json UpdateString: @"RateRequest.Shipment.Package.PackageWeight.UnitOfMeasurement.Code" value: @"LBS"];
[json UpdateString: @"RateRequest.Shipment.Package.PackageWeight.UnitOfMeasurement.Description" value: @"Pounds"];
[json UpdateString: @"RateRequest.Shipment.Package.PackageWeight.Weight" value: @"1"];

//  Load the OAuth2 access token obtained via client credentials as shown 
//  in this UPS OAuth2 Client Credentials example.

CkoJsonObject *jsonToken = [[CkoJsonObject alloc] init];
success = [jsonToken LoadFile: @"qa_data/tokens/ups_oauth2_token.json"];
if (success != YES) {
    NSLog(@"%@",@"Failed to load ups_oauth2_token.json");
    return;
}

//  The access token JSON looks something like this:

//  {
//    "token_type": "Bearer",
//    "issued_at": "1686911985606",
//    "client_id": "2498righ8wr6aihe98rt8rhowirtyw9er6twe80rtywrehrt",
//    "access_token": "eyJraW......R2sbqrY",
//    "expires_in": "14399",
//    "status": "approved"
//  }

//  Adds the "Authorization: Bearer <YOUR_TOKEN_HERE>" header.
http.AuthToken = [jsonToken StringOf: @"access_token"];
[http SetRequestHeader: @"Content-Type" value: @"application/json"];
[http SetRequestHeader: @"transId" value: @"string"];
[http SetRequestHeader: @"transactionSrc" value: @"testing"];

//  The "version" indicates Rate API to display the new release features in Rate API response based on Rate release.
//  Supported values: v1, v1601, v1607, v1701, v1707, v2108, v2205.
[http SetUrlVar: @"version" value: @"v1"];

//  The "requestoption" has the following valid values:
//  Rate = The server rates (The default Request option is Rate if a Request Option is not provided). 
//  Shop = The server validates the shipment, and returns rates for all UPS products from the ShipFrom to the ShipTo addresses. 
//  Rate is the only valid request option for Ground Freight Pricing requests.
[http SetUrlVar: @"requestoption" value: @"Rate"];

CkoHttpResponse *resp = [[CkoHttpResponse alloc] init];
success = [http HttpJson: @"POST" url: @"https://wwwcie.ups.com/api/rating/{$version}/{$requestoption}?additionalinfo=string" json: json contentType: @"application/json" response: resp];
if (success == NO) {
    NSLog(@"%@",http.LastErrorText);
    return;
}

CkoStringBuilder *sbResponseBody = [[CkoStringBuilder alloc] init];
[resp GetBodySb: sbResponseBody];

CkoJsonObject *jResp = [[CkoJsonObject alloc] init];
[jResp LoadSb: sbResponseBody];
jResp.EmitCompact = NO;

NSLog(@"%@",@"Response Body:");
NSLog(@"%@",[jResp Emit]);

//  ----------------------------------------------------------------------------------------------------------
//  Important: If you get the following error response, read further for the solution..
//  
//  {
//    "response": {
//      "errors": [
//        {
//          "code": "250002",
//          "message": "Invalid Authentication Information."
//        }
//      ]
//    }
//  }
//  
//  It means you didn't add the Rating API permission to your app.
//  To add the Rating API, login to your developer account and go to your Apps page at https://developer.ups.com/apps?loc=en_US
//  Then edit your app and add the Rating API.
//  ----------------------------------------------------------------------------------------------------------

int respStatusCode = [resp.StatusCode intValue];
NSLog(@"%@%d",@"Response Status Code = ",respStatusCode);
if (respStatusCode >= 400) {
    NSLog(@"%@",@"Response Header:");
    NSLog(@"%@",resp.Header);
    NSLog(@"%@",@"Failed.");
    return;
}

//  Sample JSON response:
//  (Sample code for parsing the JSON response is shown below)

//  {
//    "RateResponse": {
//      "Response": {
//        "ResponseStatus": {
//          "Code": "s",
//          "Description": "string"
//        },
//        "Alert": [
//          {
//            "Code": "string",
//            "Description": "string"
//          }
//        ],
//        "AlertDetail": [
//          {
//            "Code": "string",
//            "Description": "string",
//            "ElementLevelInformation": {
//              "Level": "s",
//              "ElementIdentifier": [
//                {
//                  "Code": null,
//                  "Value": null
//                }
//              ]
//            }
//          }
//        ],
//        "TransactionReference": {
//          "CustomerContext": "string"
//        }
//      },
//      "RatedShipment": [
//        {
//          "Disclaimer": [
//            {
//              "Code": "st",
//              "Description": "string"
//            }
//          ],
//          "Service": {
//            "Code": "str",
//            "Description": "string"
//          },
//          "RateChart": "s",
//          "RatedShipmentAlert": [
//            {
//              "Code": "string",
//              "Description": "string"
//            }
//          ],
//          "BillableWeightCalculationMethod": "st",
//          "RatingMethod": "st",
//          "BillingWeight": {
//            "UnitOfMeasurement": {
//              "Code": "str",
//              "Description": "string"
//            },
//            "Weight": "strin"
//          },
//          "TransportationCharges": {
//            "CurrencyCode": "str",
//            "MonetaryValue": "stringstringstri"
//          },
//          "BaseServiceCharge": {
//            "CurrencyCode": "str",
//            "MonetaryValue": "stringstringstri"
//          },
//          "ItemizedCharges": [
//            {
//              "Code": "str",
//              "Description": "string",
//              "CurrencyCode": "str",
//              "MonetaryValue": "string",
//              "SubType": "string"
//            }
//          ],
//          "FRSShipmentData": {
//            "TransportationCharges": {
//              "GrossCharge": {
//                "CurrencyCode": "str",
//                "MonetaryValue": "string"
//              },
//              "DiscountAmount": {
//                "CurrencyCode": "str",
//                "MonetaryValue": "string"
//              },
//              "DiscountPercentage": "st",
//              "NetCharge": {
//                "CurrencyCode": "str",
//                "MonetaryValue": "string"
//              }
//            },
//            "FreightDensityRate": {
//              "Density": "strin",
//              "TotalCubicFeet": "string"
//            },
//            "HandlingUnits": [
//              {
//                "Quantity": "string",
//                "Type": {
//                  "Code": null,
//                  "Description": null
//                },
//                "Dimensions": {
//                  "UnitOfMeasurement": null,
//                  "Length": null,
//                  "Width": null,
//                  "Height": null
//                },
//                "AdjustedHeight": {
//                  "Value": null,
//                  "UnitOfMeasurement": null
//                }
//              }
//            ]
//          },
//          "ServiceOptionsCharges": {
//            "CurrencyCode": "str",
//            "MonetaryValue": "string"
//          },
//          "TaxCharges": [
//            {
//              "Type": "string",
//              "MonetaryValue": "string"
//            }
//          ],
//          "TotalCharges": {
//            "CurrencyCode": "str",
//            "MonetaryValue": "string"
//          },
//          "TotalChargesWithTaxes": {
//            "CurrencyCode": "str",
//            "MonetaryValue": "string"
//          },
//          "NegotiatedRateCharges": {
//            "ItemizedCharges": [
//              {
//                "Code": "str",
//                "Description": "string",
//                "CurrencyCode": "str",
//                "MonetaryValue": "string",
//                "SubType": "string"
//              }
//            ],
//            "TaxCharges": [
//              {
//                "Type": "string",
//                "MonetaryValue": "string"
//              }
//            ],
//            "TotalCharge": {
//              "CurrencyCode": "string",
//              "MonetaryValue": "string"
//            },
//            "TotalChargesWithTaxes": {
//              "CurrencyCode": "string",
//              "MonetaryValue": "string"
//            }
//          },
//          "RatedPackage": [
//            {
//              "BaseServiceCharge": {
//                "CurrencyCode": "str",
//                "MonetaryValue": "string"
//              },
//              "TransportationCharges": {
//                "CurrencyCode": "string",
//                "MonetaryValue": "string"
//              },
//              "ServiceOptionsCharges": {
//                "CurrencyCode": "string",
//                "MonetaryValue": "string"
//              },
//              "TotalCharges": {
//                "CurrencyCode": "string",
//                "MonetaryValue": "string"
//              },
//              "Weight": "string",
//              "BillingWeight": {
//                "UnitOfMeasurement": {
//                  "Code": null,
//                  "Description": null
//                },
//                "Weight": "string"
//              },
//              "Accessorial": [
//                {
//                  "Code": null,
//                  "Description": null
//                }
//              ],
//              "ItemizedCharges": [
//                {
//                  "Code": null,
//                  "Description": null,
//                  "CurrencyCode": null,
//                  "MonetaryValue": null,
//                  "SubType": null
//                }
//              ],
//              "NegotiatedCharges": {
//                "ItemizedCharges": [
//                  null
//                ]
//              },
//              "SimpleRate": {
//                "Code": "st"
//              },
//              "RateModifier": [
//                {
//                  "ModifierType": null,
//                  "ModifierDesc": null,
//                  "Amount": null
//                }
//              ]
//            }
//          ],
//          "TimeInTransit": {
//            "PickupDate": "stringst",
//            "DocumentsOnlyIndicator": "string",
//            "PackageBillType": "st",
//            "ServiceSummary": {
//              "Service": {
//                "Description": "string"
//              },
//              "GuaranteedIndicator": "string",
//              "Disclaimer": "string",
//              "EstimatedArrival": {
//                "Arrival": {
//                  "Date": null,
//                  "Time": null
//                },
//                "BusinessDaysInTransit": "strin",
//                "Pickup": {
//                  "Date": null,
//                  "Time": null
//                },
//                "DayOfWeek": "string",
//                "CustomerCenterCutoff": "string",
//                "DelayCount": "str",
//                "HolidayCount": "st",
//                "RestDays": "st",
//                "TotalTransitDays": "strin"
//              },
//              "SaturdayDelivery": "string",
//              "SaturdayDeliveryDisclaimer": "string",
//              "SundayDelivery": "string",
//              "SundayDeliveryDisclaimer": "string"
//            },
//            "AutoDutyCode": "st",
//            "Disclaimer": "string"
//          },
//          "ScheduledDeliveryDate": "string",
//          "RoarRatedIndicator": "string"
//        }
//      ]
//    }
//  }

//  Sample code for parsing the JSON response...
//  Use the following online tool to generate parsing code from sample JSON:
//  Generate Parsing Code from JSON

NSString *Level = 0;
int j;
int count_j;
NSString *Value = 0;
NSString *ServiceCode = 0;
NSString *ServiceDescription = 0;
NSString *RateChart = 0;
NSString *BillableWeightCalculationMethod = 0;
NSString *RatingMethod = 0;
NSString *UnitOfMeasurementCode = 0;
NSString *UnitOfMeasurementDescription = 0;
NSString *Weight = 0;
NSString *CurrencyCode = 0;
NSString *MonetaryValue = 0;
NSString *BaseServiceChargeCurrencyCode = 0;
NSString *BaseServiceChargeMonetaryValue = 0;
NSString *GrossChargeCurrencyCode = 0;
NSString *GrossChargeMonetaryValue = 0;
NSString *DiscountAmountCurrencyCode = 0;
NSString *DiscountAmountMonetaryValue = 0;
NSString *DiscountPercentage = 0;
NSString *NetChargeCurrencyCode = 0;
NSString *NetChargeMonetaryValue = 0;
NSString *Density = 0;
NSString *TotalCubicFeet = 0;
NSString *ServiceOptionsChargesCurrencyCode = 0;
NSString *ServiceOptionsChargesMonetaryValue = 0;
NSString *TotalChargesCurrencyCode = 0;
NSString *TotalChargesMonetaryValue = 0;
NSString *TotalChargesWithTaxesCurrencyCode = 0;
NSString *TotalChargesWithTaxesMonetaryValue = 0;
NSString *TotalChargeCurrencyCode = 0;
NSString *TotalChargeMonetaryValue = 0;
NSString *PickupDate = 0;
NSString *DocumentsOnlyIndicator = 0;
NSString *PackageBillType = 0;
NSString *GuaranteedIndicator = 0;
NSString *Disclaimer = 0;
NSString *Date = 0;
NSString *Time = 0;
NSString *BusinessDaysInTransit = 0;
NSString *PickupTime = 0;
NSString *DayOfWeek = 0;
NSString *CustomerCenterCutoff = 0;
NSString *DelayCount = 0;
NSString *HolidayCount = 0;
NSString *RestDays = 0;
NSString *TotalTransitDays = 0;
NSString *SaturdayDelivery = 0;
NSString *SaturdayDeliveryDisclaimer = 0;
NSString *SundayDelivery = 0;
NSString *SundayDeliveryDisclaimer = 0;
NSString *AutoDutyCode = 0;
NSString *TimeInTransitDisclaimer = 0;
NSString *ScheduledDeliveryDate = 0;
NSString *RoarRatedIndicator = 0;
NSString *SubType = 0;
NSString *Quantity = 0;
NSString *TypeCode = 0;
NSString *TypeDescription = 0;
NSString *UnitOfMeasurement = 0;
NSString *Length = 0;
NSString *Width = 0;
NSString *Height = 0;
NSString *AdjustedHeightValue = 0;
NSString *AdjustedHeightUnitOfMeasurement = 0;
NSString *v_Type = 0;
NSString *TransportationChargesCurrencyCode = 0;
NSString *TransportationChargesMonetaryValue = 0;
NSString *BillingWeightWeight = 0;
NSString *SimpleRateCode = 0;
int k;
int count_k;
BOOL nullVal;
NSString *ModifierType = 0;
NSString *ModifierDesc = 0;
NSString *Amount = 0;

NSString *Code = [jResp StringOf: @"RateResponse.Response.ResponseStatus.Code"];
NSString *Description = [jResp StringOf: @"RateResponse.Response.ResponseStatus.Description"];
NSString *CustomerContext = [jResp StringOf: @"RateResponse.Response.TransactionReference.CustomerContext"];
int i = 0;
int count_i = [[jResp SizeOfArray: @"RateResponse.Response.Alert"] intValue];
while (i < count_i) {
    jResp.I = [NSNumber numberWithInt: i];
    Code = [jResp StringOf: @"RateResponse.Response.Alert[i].Code"];
    Description = [jResp StringOf: @"RateResponse.Response.Alert[i].Description"];
    i = i + 1;
}

i = 0;
count_i = [[jResp SizeOfArray: @"RateResponse.Response.AlertDetail"] intValue];
while (i < count_i) {
    jResp.I = [NSNumber numberWithInt: i];
    Code = [jResp StringOf: @"RateResponse.Response.AlertDetail[i].Code"];
    Description = [jResp StringOf: @"RateResponse.Response.AlertDetail[i].Description"];
    Level = [jResp StringOf: @"RateResponse.Response.AlertDetail[i].ElementLevelInformation.Level"];
    j = 0;
    count_j = [[jResp SizeOfArray: @"RateResponse.Response.AlertDetail[i].ElementLevelInformation.ElementIdentifier"] intValue];
    while (j < count_j) {
        jResp.J = [NSNumber numberWithInt: j];
        Code = [jResp StringOf: @"RateResponse.Response.AlertDetail[i].ElementLevelInformation.ElementIdentifier[j].Code"];
        Value = [jResp StringOf: @"RateResponse.Response.AlertDetail[i].ElementLevelInformation.ElementIdentifier[j].Value"];
        j = j + 1;
    }

    i = i + 1;
}

i = 0;
count_i = [[jResp SizeOfArray: @"RateResponse.RatedShipment"] intValue];
while (i < count_i) {
    jResp.I = [NSNumber numberWithInt: i];
    ServiceCode = [jResp StringOf: @"RateResponse.RatedShipment[i].Service.Code"];
    ServiceDescription = [jResp StringOf: @"RateResponse.RatedShipment[i].Service.Description"];
    RateChart = [jResp StringOf: @"RateResponse.RatedShipment[i].RateChart"];
    BillableWeightCalculationMethod = [jResp StringOf: @"RateResponse.RatedShipment[i].BillableWeightCalculationMethod"];
    RatingMethod = [jResp StringOf: @"RateResponse.RatedShipment[i].RatingMethod"];
    UnitOfMeasurementCode = [jResp StringOf: @"RateResponse.RatedShipment[i].BillingWeight.UnitOfMeasurement.Code"];
    UnitOfMeasurementDescription = [jResp StringOf: @"RateResponse.RatedShipment[i].BillingWeight.UnitOfMeasurement.Description"];
    Weight = [jResp StringOf: @"RateResponse.RatedShipment[i].BillingWeight.Weight"];
    CurrencyCode = [jResp StringOf: @"RateResponse.RatedShipment[i].TransportationCharges.CurrencyCode"];
    MonetaryValue = [jResp StringOf: @"RateResponse.RatedShipment[i].TransportationCharges.MonetaryValue"];
    BaseServiceChargeCurrencyCode = [jResp StringOf: @"RateResponse.RatedShipment[i].BaseServiceCharge.CurrencyCode"];
    BaseServiceChargeMonetaryValue = [jResp StringOf: @"RateResponse.RatedShipment[i].BaseServiceCharge.MonetaryValue"];
    GrossChargeCurrencyCode = [jResp StringOf: @"RateResponse.RatedShipment[i].FRSShipmentData.TransportationCharges.GrossCharge.CurrencyCode"];
    GrossChargeMonetaryValue = [jResp StringOf: @"RateResponse.RatedShipment[i].FRSShipmentData.TransportationCharges.GrossCharge.MonetaryValue"];
    DiscountAmountCurrencyCode = [jResp StringOf: @"RateResponse.RatedShipment[i].FRSShipmentData.TransportationCharges.DiscountAmount.CurrencyCode"];
    DiscountAmountMonetaryValue = [jResp StringOf: @"RateResponse.RatedShipment[i].FRSShipmentData.TransportationCharges.DiscountAmount.MonetaryValue"];
    DiscountPercentage = [jResp StringOf: @"RateResponse.RatedShipment[i].FRSShipmentData.TransportationCharges.DiscountPercentage"];
    NetChargeCurrencyCode = [jResp StringOf: @"RateResponse.RatedShipment[i].FRSShipmentData.TransportationCharges.NetCharge.CurrencyCode"];
    NetChargeMonetaryValue = [jResp StringOf: @"RateResponse.RatedShipment[i].FRSShipmentData.TransportationCharges.NetCharge.MonetaryValue"];
    Density = [jResp StringOf: @"RateResponse.RatedShipment[i].FRSShipmentData.FreightDensityRate.Density"];
    TotalCubicFeet = [jResp StringOf: @"RateResponse.RatedShipment[i].FRSShipmentData.FreightDensityRate.TotalCubicFeet"];
    ServiceOptionsChargesCurrencyCode = [jResp StringOf: @"RateResponse.RatedShipment[i].ServiceOptionsCharges.CurrencyCode"];
    ServiceOptionsChargesMonetaryValue = [jResp StringOf: @"RateResponse.RatedShipment[i].ServiceOptionsCharges.MonetaryValue"];
    TotalChargesCurrencyCode = [jResp StringOf: @"RateResponse.RatedShipment[i].TotalCharges.CurrencyCode"];
    TotalChargesMonetaryValue = [jResp StringOf: @"RateResponse.RatedShipment[i].TotalCharges.MonetaryValue"];
    TotalChargesWithTaxesCurrencyCode = [jResp StringOf: @"RateResponse.RatedShipment[i].TotalChargesWithTaxes.CurrencyCode"];
    TotalChargesWithTaxesMonetaryValue = [jResp StringOf: @"RateResponse.RatedShipment[i].TotalChargesWithTaxes.MonetaryValue"];
    TotalChargeCurrencyCode = [jResp StringOf: @"RateResponse.RatedShipment[i].NegotiatedRateCharges.TotalCharge.CurrencyCode"];
    TotalChargeMonetaryValue = [jResp StringOf: @"RateResponse.RatedShipment[i].NegotiatedRateCharges.TotalCharge.MonetaryValue"];
    TotalChargesWithTaxesCurrencyCode = [jResp StringOf: @"RateResponse.RatedShipment[i].NegotiatedRateCharges.TotalChargesWithTaxes.CurrencyCode"];
    TotalChargesWithTaxesMonetaryValue = [jResp StringOf: @"RateResponse.RatedShipment[i].NegotiatedRateCharges.TotalChargesWithTaxes.MonetaryValue"];
    PickupDate = [jResp StringOf: @"RateResponse.RatedShipment[i].TimeInTransit.PickupDate"];
    DocumentsOnlyIndicator = [jResp StringOf: @"RateResponse.RatedShipment[i].TimeInTransit.DocumentsOnlyIndicator"];
    PackageBillType = [jResp StringOf: @"RateResponse.RatedShipment[i].TimeInTransit.PackageBillType"];
    ServiceDescription = [jResp StringOf: @"RateResponse.RatedShipment[i].TimeInTransit.ServiceSummary.Service.Description"];
    GuaranteedIndicator = [jResp StringOf: @"RateResponse.RatedShipment[i].TimeInTransit.ServiceSummary.GuaranteedIndicator"];
    Disclaimer = [jResp StringOf: @"RateResponse.RatedShipment[i].TimeInTransit.ServiceSummary.Disclaimer"];
    Date = [jResp StringOf: @"RateResponse.RatedShipment[i].TimeInTransit.ServiceSummary.EstimatedArrival.Arrival.Date"];
    Time = [jResp StringOf: @"RateResponse.RatedShipment[i].TimeInTransit.ServiceSummary.EstimatedArrival.Arrival.Time"];
    BusinessDaysInTransit = [jResp StringOf: @"RateResponse.RatedShipment[i].TimeInTransit.ServiceSummary.EstimatedArrival.BusinessDaysInTransit"];
    PickupDate = [jResp StringOf: @"RateResponse.RatedShipment[i].TimeInTransit.ServiceSummary.EstimatedArrival.Pickup.Date"];
    PickupTime = [jResp StringOf: @"RateResponse.RatedShipment[i].TimeInTransit.ServiceSummary.EstimatedArrival.Pickup.Time"];
    DayOfWeek = [jResp StringOf: @"RateResponse.RatedShipment[i].TimeInTransit.ServiceSummary.EstimatedArrival.DayOfWeek"];
    CustomerCenterCutoff = [jResp StringOf: @"RateResponse.RatedShipment[i].TimeInTransit.ServiceSummary.EstimatedArrival.CustomerCenterCutoff"];
    DelayCount = [jResp StringOf: @"RateResponse.RatedShipment[i].TimeInTransit.ServiceSummary.EstimatedArrival.DelayCount"];
    HolidayCount = [jResp StringOf: @"RateResponse.RatedShipment[i].TimeInTransit.ServiceSummary.EstimatedArrival.HolidayCount"];
    RestDays = [jResp StringOf: @"RateResponse.RatedShipment[i].TimeInTransit.ServiceSummary.EstimatedArrival.RestDays"];
    TotalTransitDays = [jResp StringOf: @"RateResponse.RatedShipment[i].TimeInTransit.ServiceSummary.EstimatedArrival.TotalTransitDays"];
    SaturdayDelivery = [jResp StringOf: @"RateResponse.RatedShipment[i].TimeInTransit.ServiceSummary.SaturdayDelivery"];
    SaturdayDeliveryDisclaimer = [jResp StringOf: @"RateResponse.RatedShipment[i].TimeInTransit.ServiceSummary.SaturdayDeliveryDisclaimer"];
    SundayDelivery = [jResp StringOf: @"RateResponse.RatedShipment[i].TimeInTransit.ServiceSummary.SundayDelivery"];
    SundayDeliveryDisclaimer = [jResp StringOf: @"RateResponse.RatedShipment[i].TimeInTransit.ServiceSummary.SundayDeliveryDisclaimer"];
    AutoDutyCode = [jResp StringOf: @"RateResponse.RatedShipment[i].TimeInTransit.AutoDutyCode"];
    TimeInTransitDisclaimer = [jResp StringOf: @"RateResponse.RatedShipment[i].TimeInTransit.Disclaimer"];
    ScheduledDeliveryDate = [jResp StringOf: @"RateResponse.RatedShipment[i].ScheduledDeliveryDate"];
    RoarRatedIndicator = [jResp StringOf: @"RateResponse.RatedShipment[i].RoarRatedIndicator"];
    j = 0;
    count_j = [[jResp SizeOfArray: @"RateResponse.RatedShipment[i].Disclaimer"] intValue];
    while (j < count_j) {
        jResp.J = [NSNumber numberWithInt: j];
        Code = [jResp StringOf: @"RateResponse.RatedShipment[i].Disclaimer[j].Code"];
        Description = [jResp StringOf: @"RateResponse.RatedShipment[i].Disclaimer[j].Description"];
        j = j + 1;
    }

    j = 0;
    count_j = [[jResp SizeOfArray: @"RateResponse.RatedShipment[i].RatedShipmentAlert"] intValue];
    while (j < count_j) {
        jResp.J = [NSNumber numberWithInt: j];
        Code = [jResp StringOf: @"RateResponse.RatedShipment[i].RatedShipmentAlert[j].Code"];
        Description = [jResp StringOf: @"RateResponse.RatedShipment[i].RatedShipmentAlert[j].Description"];
        j = j + 1;
    }

    j = 0;
    count_j = [[jResp SizeOfArray: @"RateResponse.RatedShipment[i].ItemizedCharges"] intValue];
    while (j < count_j) {
        jResp.J = [NSNumber numberWithInt: j];
        Code = [jResp StringOf: @"RateResponse.RatedShipment[i].ItemizedCharges[j].Code"];
        Description = [jResp StringOf: @"RateResponse.RatedShipment[i].ItemizedCharges[j].Description"];
        CurrencyCode = [jResp StringOf: @"RateResponse.RatedShipment[i].ItemizedCharges[j].CurrencyCode"];
        MonetaryValue = [jResp StringOf: @"RateResponse.RatedShipment[i].ItemizedCharges[j].MonetaryValue"];
        SubType = [jResp StringOf: @"RateResponse.RatedShipment[i].ItemizedCharges[j].SubType"];
        j = j + 1;
    }

    j = 0;
    count_j = [[jResp SizeOfArray: @"RateResponse.RatedShipment[i].FRSShipmentData.HandlingUnits"] intValue];
    while (j < count_j) {
        jResp.J = [NSNumber numberWithInt: j];
        Quantity = [jResp StringOf: @"RateResponse.RatedShipment[i].FRSShipmentData.HandlingUnits[j].Quantity"];
        TypeCode = [jResp StringOf: @"RateResponse.RatedShipment[i].FRSShipmentData.HandlingUnits[j].Type.Code"];
        TypeDescription = [jResp StringOf: @"RateResponse.RatedShipment[i].FRSShipmentData.HandlingUnits[j].Type.Description"];
        UnitOfMeasurement = [jResp StringOf: @"RateResponse.RatedShipment[i].FRSShipmentData.HandlingUnits[j].Dimensions.UnitOfMeasurement"];
        Length = [jResp StringOf: @"RateResponse.RatedShipment[i].FRSShipmentData.HandlingUnits[j].Dimensions.Length"];
        Width = [jResp StringOf: @"RateResponse.RatedShipment[i].FRSShipmentData.HandlingUnits[j].Dimensions.Width"];
        Height = [jResp StringOf: @"RateResponse.RatedShipment[i].FRSShipmentData.HandlingUnits[j].Dimensions.Height"];
        AdjustedHeightValue = [jResp StringOf: @"RateResponse.RatedShipment[i].FRSShipmentData.HandlingUnits[j].AdjustedHeight.Value"];
        AdjustedHeightUnitOfMeasurement = [jResp StringOf: @"RateResponse.RatedShipment[i].FRSShipmentData.HandlingUnits[j].AdjustedHeight.UnitOfMeasurement"];
        j = j + 1;
    }

    j = 0;
    count_j = [[jResp SizeOfArray: @"RateResponse.RatedShipment[i].TaxCharges"] intValue];
    while (j < count_j) {
        jResp.J = [NSNumber numberWithInt: j];
        v_Type = [jResp StringOf: @"RateResponse.RatedShipment[i].TaxCharges[j].Type"];
        MonetaryValue = [jResp StringOf: @"RateResponse.RatedShipment[i].TaxCharges[j].MonetaryValue"];
        j = j + 1;
    }

    j = 0;
    count_j = [[jResp SizeOfArray: @"RateResponse.RatedShipment[i].NegotiatedRateCharges.ItemizedCharges"] intValue];
    while (j < count_j) {
        jResp.J = [NSNumber numberWithInt: j];
        Code = [jResp StringOf: @"RateResponse.RatedShipment[i].NegotiatedRateCharges.ItemizedCharges[j].Code"];
        Description = [jResp StringOf: @"RateResponse.RatedShipment[i].NegotiatedRateCharges.ItemizedCharges[j].Description"];
        CurrencyCode = [jResp StringOf: @"RateResponse.RatedShipment[i].NegotiatedRateCharges.ItemizedCharges[j].CurrencyCode"];
        MonetaryValue = [jResp StringOf: @"RateResponse.RatedShipment[i].NegotiatedRateCharges.ItemizedCharges[j].MonetaryValue"];
        SubType = [jResp StringOf: @"RateResponse.RatedShipment[i].NegotiatedRateCharges.ItemizedCharges[j].SubType"];
        j = j + 1;
    }

    j = 0;
    count_j = [[jResp SizeOfArray: @"RateResponse.RatedShipment[i].NegotiatedRateCharges.TaxCharges"] intValue];
    while (j < count_j) {
        jResp.J = [NSNumber numberWithInt: j];
        v_Type = [jResp StringOf: @"RateResponse.RatedShipment[i].NegotiatedRateCharges.TaxCharges[j].Type"];
        MonetaryValue = [jResp StringOf: @"RateResponse.RatedShipment[i].NegotiatedRateCharges.TaxCharges[j].MonetaryValue"];
        j = j + 1;
    }

    j = 0;
    count_j = [[jResp SizeOfArray: @"RateResponse.RatedShipment[i].RatedPackage"] intValue];
    while (j < count_j) {
        jResp.J = [NSNumber numberWithInt: j];
        BaseServiceChargeCurrencyCode = [jResp StringOf: @"RateResponse.RatedShipment[i].RatedPackage[j].BaseServiceCharge.CurrencyCode"];
        BaseServiceChargeMonetaryValue = [jResp StringOf: @"RateResponse.RatedShipment[i].RatedPackage[j].BaseServiceCharge.MonetaryValue"];
        TransportationChargesCurrencyCode = [jResp StringOf: @"RateResponse.RatedShipment[i].RatedPackage[j].TransportationCharges.CurrencyCode"];
        TransportationChargesMonetaryValue = [jResp StringOf: @"RateResponse.RatedShipment[i].RatedPackage[j].TransportationCharges.MonetaryValue"];
        ServiceOptionsChargesCurrencyCode = [jResp StringOf: @"RateResponse.RatedShipment[i].RatedPackage[j].ServiceOptionsCharges.CurrencyCode"];
        ServiceOptionsChargesMonetaryValue = [jResp StringOf: @"RateResponse.RatedShipment[i].RatedPackage[j].ServiceOptionsCharges.MonetaryValue"];
        TotalChargesCurrencyCode = [jResp StringOf: @"RateResponse.RatedShipment[i].RatedPackage[j].TotalCharges.CurrencyCode"];
        TotalChargesMonetaryValue = [jResp StringOf: @"RateResponse.RatedShipment[i].RatedPackage[j].TotalCharges.MonetaryValue"];
        Weight = [jResp StringOf: @"RateResponse.RatedShipment[i].RatedPackage[j].Weight"];
        UnitOfMeasurementCode = [jResp StringOf: @"RateResponse.RatedShipment[i].RatedPackage[j].BillingWeight.UnitOfMeasurement.Code"];
        UnitOfMeasurementDescription = [jResp StringOf: @"RateResponse.RatedShipment[i].RatedPackage[j].BillingWeight.UnitOfMeasurement.Description"];
        BillingWeightWeight = [jResp StringOf: @"RateResponse.RatedShipment[i].RatedPackage[j].BillingWeight.Weight"];
        SimpleRateCode = [jResp StringOf: @"RateResponse.RatedShipment[i].RatedPackage[j].SimpleRate.Code"];
        k = 0;
        count_k = [[jResp SizeOfArray: @"RateResponse.RatedShipment[i].RatedPackage[j].Accessorial"] intValue];
        while (k < count_k) {
            jResp.K = [NSNumber numberWithInt: k];
            Code = [jResp StringOf: @"RateResponse.RatedShipment[i].RatedPackage[j].Accessorial[k].Code"];
            Description = [jResp StringOf: @"RateResponse.RatedShipment[i].RatedPackage[j].Accessorial[k].Description"];
            k = k + 1;
        }

        k = 0;
        count_k = [[jResp SizeOfArray: @"RateResponse.RatedShipment[i].RatedPackage[j].ItemizedCharges"] intValue];
        while (k < count_k) {
            jResp.K = [NSNumber numberWithInt: k];
            Code = [jResp StringOf: @"RateResponse.RatedShipment[i].RatedPackage[j].ItemizedCharges[k].Code"];
            Description = [jResp StringOf: @"RateResponse.RatedShipment[i].RatedPackage[j].ItemizedCharges[k].Description"];
            CurrencyCode = [jResp StringOf: @"RateResponse.RatedShipment[i].RatedPackage[j].ItemizedCharges[k].CurrencyCode"];
            MonetaryValue = [jResp StringOf: @"RateResponse.RatedShipment[i].RatedPackage[j].ItemizedCharges[k].MonetaryValue"];
            SubType = [jResp StringOf: @"RateResponse.RatedShipment[i].RatedPackage[j].ItemizedCharges[k].SubType"];
            k = k + 1;
        }

        k = 0;
        count_k = [[jResp SizeOfArray: @"RateResponse.RatedShipment[i].RatedPackage[j].NegotiatedCharges.ItemizedCharges"] intValue];
        while (k < count_k) {
            jResp.K = [NSNumber numberWithInt: k];
            nullVal = [jResp IsNullOf: @"RateResponse.RatedShipment[i].RatedPackage[j].NegotiatedCharges.ItemizedCharges[k]"];
            k = k + 1;
        }

        k = 0;
        count_k = [[jResp SizeOfArray: @"RateResponse.RatedShipment[i].RatedPackage[j].RateModifier"] intValue];
        while (k < count_k) {
            jResp.K = [NSNumber numberWithInt: k];
            ModifierType = [jResp StringOf: @"RateResponse.RatedShipment[i].RatedPackage[j].RateModifier[k].ModifierType"];
            ModifierDesc = [jResp StringOf: @"RateResponse.RatedShipment[i].RatedPackage[j].RateModifier[k].ModifierDesc"];
            Amount = [jResp StringOf: @"RateResponse.RatedShipment[i].RatedPackage[j].RateModifier[k].Amount"];
            k = k + 1;
        }

        j = j + 1;
    }

    i = i + 1;
}