public static ShipResponse SendConfirmRequest(ref ShipRequest req) { ShipResponse result = new ShipResponse(); // Build Request and save output string requestXml = BuildShipConfirmRequest(ref req); req.XmlConfirmRequest = requestXml; // Build Url for UPS Service string actionUrl = req.Settings.ServerUrl; actionUrl += "ShipConfirm"; // Send Request and Store Response string responseXml = string.Empty; responseXml = XmlTools.ReadHtmlPage_POST(actionUrl, requestXml); req.XmlConfirmResponse = responseXml; // Parse Response result = ParseShipConfirmResponse(responseXml); return result; }
private static ShipResponse ParseShipConfirmResponse(string xml) { ShipResponse result = new ShipResponse(); try { XmlDocument xDoc; xDoc = new XmlDocument(); xDoc.LoadXml(xml); XmlNode nodeResponseCode = xDoc.SelectSingleNode("ShipmentConfirmResponse/Response/ResponseStatusCode"); if (nodeResponseCode != null) { int responseCode = 0; responseCode = int.Parse(nodeResponseCode.InnerText); if (responseCode == 1) { result.Success = true; // Parse appropriate info result.ShipmentDigest = XmlTools.XPathToString(ref xDoc, "ShipmentConfirmResponse/ShipmentDigest"); result.TrackingNumber = XmlTools.XPathToString(ref xDoc, "ShipmentConfirmResponse/ShipmentIdentificationNumber"); result.BillingWeight = XmlTools.XPathToDecimal(ref xDoc, "ShipmentConfirmResponse/BillingWeight/Weight"); result.BillingWeightUnits = XmlTools.XPathToUnits(ref xDoc, "ShipmentConfirmResponse/BillingWeight/UnitOfMeasurement/Code"); result.ServiceOptionsCharge = XmlTools.XPathToDecimal(ref xDoc, "ShipmentConfirmResponse/ShipmentCharges/ServiceOptionsCharges/MonetaryValue"); result.ServiceOptionsChargeCurrency = XmlTools.XPathToCurrencyCode(ref xDoc, "ShipmentConfirmResponse/ShipmentCharges/ServiceOptionsCharges/CurrencyCode"); result.TotalCharge = XmlTools.XPathToDecimal(ref xDoc, "ShipmentConfirmResponse/ShipmentCharges/TotalCharges/MonetaryValue"); result.TotalChargeCurrency = XmlTools.XPathToCurrencyCode(ref xDoc, "ShipmentConfirmResponse/ShipmentCharges/TotalCharges/CurrencyCode"); result.TransportationCharge = XmlTools.XPathToDecimal(ref xDoc, "ShipmentConfirmResponse/ShipmentCharges/TransportationCharges/MonetaryValue"); result.TransportationChargeCurrency = XmlTools.XPathToCurrencyCode(ref xDoc, "ShipmentConfirmResponse/ShipmentCharges/TransportationCharges/CurrencyCode"); } else { result.Success = false; // Parse error result.ErrorMessage = XmlTools.XPathToString(ref xDoc, "ShipmentConfirmResponse/Response/Error/ErrorDescription"); } } else { result.Success = false; result.ErrorMessage = "Unable to Parse Response Code."; } } catch (Exception Exx) { result.ErrorMessage = "Parsing Error: " + Exx.Message; result.Success = false; } return result; }