【问题标题】:UPS Rating API C# .NetUPS 评级 API C# .Net
【发布时间】:2017-04-14 16:48:42
【问题描述】:

我正在尝试让现在支持在途时间的 UPS Rating API 工作。我有最新的 WSDL (UPS API)。我不断收到异常错误“由于客户端数据引发了异常。”我不知道是什么问题。注意:“Rate” requestOption 没有问题 - 当 TimeinTransit 和 DeliveryInformation 数据被注释掉时。

可能出了什么问题?任何帮助将不胜感激,谢谢。

这是我的 C# 代码:

UPSRateWS.RequestType request = new UPSRateWS.RequestType();
String[] requestOption = { "ratetimeintransit" };
request.RequestOption = requestOption;
request.SubVersion = "1601";

rateRequest.Request = request;

UPSRateWS.ShipmentType shipment = new UPSRateWS.ShipmentType();
UPSRateWS.ShipperType shipper = new UPSRateWS.ShipperType();

UPSRateWS.ShipmentRatingOptionsType shipmentRatingOptions = new 
     UPSRateWS.ShipmentRatingOptionsType();
shipmentRatingOptions.NegotiatedRatesIndicator = "";
shipmentRatingOptions.RateChartIndicator = "";

shipment.ShipmentRatingOptions = shipmentRatingOptions;

UPSRateWS.TimeInTransitRequestType timeInTransit = new 
     UPSRateWS.TimeInTransitRequestType();
UPSRateWS.PickupType pickupInTransitType = new UPSRateWS.PickupType();

pickupInTransitType.Date = "20170414";
pickupInTransitType.Time = "1630";

timeInTransit.Pickup = pickupInTransitType;
timeInTransit.PackageBillType = "02";

shipment.NumOfPieces = "1";

shipment.DeliveryTimeInformation = timeInTransit;

UPSRateWS.ShipmentWeightType shipWeightType = new 
     UPSRateWS.ShipmentWeightType();
shipWeightType.Weight = "10.80";

UPSRateWS.CodeDescriptionType shipWeightUOM = new 
     UPSRateWS.CodeDescriptionType();
shipWeightUOM.Code = "LBS";
shipWeightUOM.Description = "pounds";
shipWeightType.UnitOfMeasurement = shipWeightUOM;
shipment.ShipmentTotalWeight = shipWeightType;

shipper.ShipperNumber = "XXXXXX";

UPSRateWS.AddressType shipperAddress = new UPSRateWS.AddressType();
string testAddr = "7650 Tyler Blvd";
String[] addressLine = { testAddr };
shipperAddress.AddressLine = addressLine;
shipperAddress.City = "Mentor";
shipperAddress.PostalCode = "44060";
shipperAddress.StateProvinceCode = "OH";
shipperAddress.CountryCode = "US";
shipperAddress.AddressLine = addressLine;
shipper.Address = shipperAddress;

shipment.Shipper = shipper;

UPSRateWS.ShipFromType shipFrom = new UPSRateWS.ShipFromType();
UPSRateWS.ShipAddressType shipFromAddress = new UPSRateWS.ShipAddressType();

string testAddr2 = "";
String[] addressLine1 = { testAddr2 };
shipFromAddress.AddressLine = addressLine1;
shipFromAddress.City = "";
shipFromAddress.PostalCode = "45069";
shipFromAddress.StateProvinceCode = "OH";
shipFromAddress.CountryCode = "US";
shipFrom.Address = shipFromAddress;

shipment.ShipFrom = shipFrom;

UPSRateWS.ShipToType shipTo = new UPSRateWS.ShipToType();
UPSRateWS.ShipToAddressType shipToAddress = new UPSRateWS.ShipToAddressType();

string testAddr3 = "7650 Tyler Blvd";
String[] addressLine2 = { testAddr3 };
shipToAddress.AddressLine = addressLine2;
shipToAddress.City = "Mentor";
shipToAddress.PostalCode = "44060";
shipToAddress.StateProvinceCode = "OH";
shipToAddress.CountryCode = "US";
shipToAddress.ResidentialAddressIndicator = "1";
shipTo.Address = shipToAddress;

shipment.ShipTo = shipTo;

UPSRateWS.CodeDescriptionType service = new UPSRateWS.CodeDescriptionType();
service.Code = "03";    
shipment.Service = service;

UPSRateWS.PackageType package = new UPSRateWS.PackageType();
UPSRateWS.PackageWeightType packageWeight = new UPSRateWS.PackageWeightType();
packageWeight.Weight = "10.80";

UPSRateWS.CodeDescriptionType uom = new UPSRateWS.CodeDescriptionType();
uom.Code = "LBS";
uom.Description = "pounds";
packageWeight.UnitOfMeasurement = uom;
package.PackageWeight = packageWeight;

UPSRateWS.CodeDescriptionType packType = new UPSRateWS.CodeDescriptionType();
packType.Code = "02";
package.PackagingType = packType;

UPSRateWS.PackageServiceOptionsType packServType = new 
     UPSRateWS.PackageServiceOptionsType();
UPSRateWS.InsuredValueType insuredValueType = new UPSRateWS.InsuredValueType();
insuredValueType.CurrencyCode = "USD";
insuredValueType.MonetaryValue = "65.75";
packServType.DeclaredValue = insuredValueType;

UPSRateWS.ShipperDeclaredValueType shipperDeclaredValueType = new 
     UPSRateWS.ShipperDeclaredValueType();
shipperDeclaredValueType.CurrencyCode = "USD";
shipperDeclaredValueType.MonetaryValue = "65.75";
packServType.ShipperDeclaredValue = shipperDeclaredValueType;
package.PackageServiceOptions = packServType;

UPSRateWS.PackageType[] pkgArray = { package };
shipment.Package = pkgArray;
rateRequest.Shipment = shipment;

UPSRateWS.CodeDescriptionType pickupType = new UPSRateWS.CodeDescriptionType();
pickupType.Code = "01";
pickupType.Description = "Daily Pickup";
rateRequest.PickupType = pickupType;

UPSRateWS.RateResponse rateResponse = myRatePortTypeClient.ProcessRate(upss, 
     rateRequest);

【问题讨论】:

  • 创建程序。这种形式的代码很难理解。错误出现在哪一行?
  • 这将在函数中,但为了方便添加到这个论坛,我只是将它们放在一起。最后一行代码“UPSRateWS.RateResponse rateResponse = myRatePortTypeClient.ProcessRate(upss, rateRequest);”是处理费率的调用,这就是错误从 UPS 返回的地方。该行上方的所有代码都在设置要发送的请求的所有值。注意:最后一行函数中的 upss 对象是通过的凭据——出于安全原因,我没有包括在内。

标签: c# shipping ups


【解决方案1】:

您需要同时包含“rate”选项和“ratetimeintransit”选项:

String[] requestOption = { "rate","ratetimeintransit" };

【讨论】:

    猜你喜欢
    • 2016-11-16
    • 1970-01-01
    • 2020-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多