2015-02-26 3 views
0

Я пытаюсь реализовать генератор меток UPSP, но я получаю эту ошибку.Я пытаюсь реализовать ИБП Label Generating

**API Authorization failure. DelivConfirmCertifyV3.0Request is not a valid API name for this protocol.**

если я проверить в браузере, это работает отлично

http://production.shippingapis.com/ShippingAPI.dll?API=Verify&XML=%3CAddressValidateRequest%20USERID=%22Testuserid%22%3E%3CAddress%20ID=%221%22%3E%3CAddress1%3E%3C/Address1%3E%3CAddress2%3E10051+Orr+%26amp%3b+Day+Rd%3C/Address2%3E%3CCity%3Esanta+fe+springs%3C/City%3E%3CState%3Eca%3C/State%3E%3CZip5%3E90670%3C/Zip5%3E%3CZip4%3E%3C/Zip4%3E%3C/Address%3E%3C/AddressValidateRequest%3E 

Кто-нибудь знает об этой проблеме ...

код ниже:

public Package GetDeliveryConfirmationLabel(Package package) 
     { 
      string labeldate = package.ShipDate.ToShortDateString(); 
      if (package.ShipDate.ToShortDateString() == DateTime.Now.ToShortDateString()) 
       labeldate = ""; 
      string url = "?API=DelivConfirmCertifyV3.0Request&XML=<DelivConfirmCertifyV3.0Request.0Request USERID=\"{0}\"><Option>{1}</Option><ImageParameters></ImageParameters><FromName>{2}</FromName><FromFirm>{3}</FromFirm><FromAddress1>{4}</FromAddress1><FromAddress2>{5}</FromAddress2><FromCity>{6}</FromCity><FromState>{7}</FromState><FromZip5>{8}</FromZip5><FromZip4>{9}</FromZip4><ToName>{10}</ToName><ToFirm>{11}</ToFirm><ToAddress1>{12}</ToAddress1><ToAddress2>{13}</ToAddress2><ToCity>{14}</ToCity><ToState>{15}</ToState><ToZip5>{16}</ToZip5><ToZip4>{17}</ToZip4><WeightInOunces>{18}</WeightInOunces><ServiceType>{19}</ServiceType><POZipCode>{20}</POZipCode><ImageType>{21}</ImageType><LabelDate>{22}</LabelDate><CustomerRefNo>{23}</CustomerRefNo><AddressServiceRequested>{24}</AddressServiceRequested><SenderName>{25}</SenderName><SenderEMail>{26}</SenderEMail><RecipientName>{27}</RecipientName><RecipientEMail>{28}</RecipientEMail></DelivConfirmCertifyV3.0Request.0Request>"; 
      url = GetURL() + url; 
      //url = String.Format(url,this._userid, (int)package.LabelType, package.FromAddress.Contact, package.FromAddress.FirmName, package.FromAddress.Address1, package.FromAddress.Address2, package.FromAddress.City, package.FromAddress.State, package.FromAddress.Zip, package.FromAddress.ZipPlus4, package.ToAddress.Contact, package.ToAddress.FirmName, package.ToAddress.Address1, package.ToAddress.Address2, package.ToAddress.City, package.ToAddress.State, package.ToAddress.Zip, package.ToAddress.ZipPlus4, package.WeightInOunces.ToString(), package.ServiceType.ToString().Replace("_", " "), package.OriginZipcode, package.LabelImageType.ToString(), labeldate, package.ReferenceNumber, package.AddressServiceRequested.ToString(), package.FromAddress.Contact, package.FromAddress.ContactEmail, package.ToAddress.Contact, package.ToAddress.ContactEmail); 
      url = String.Format(url, this._userid, (int)package.LabelType, package.FromAddress.Contact, package.FromAddress.FirmName, package.FromAddress.Address1, package.FromAddress.Address2, package.FromAddress.City, package.FromAddress.State, package.FromAddress.Zip, package.FromAddress.ZipPlus4, package.ToAddress.Contact, package.ToAddress.FirmName, package.ToAddress.Address1, package.ToAddress.Address2, package.ToAddress.City, package.ToAddress.State, package.ToAddress.Zip, package.ToAddress.ZipPlus4, package.WeightInOunces.ToString(), package.ServiceType.ToString().Replace("_", " "), package.OriginZipcode, package.LabelImageType.ToString(), labeldate, package.ReferenceNumber, package.AddressServiceRequested.ToString(), "", "", "", ""); 
      string xml = web.DownloadString(url); 
      if (xml.Contains("<Error>")) 
      { 
       int idx1 = xml.IndexOf("<Description>") + 13; 
       int idx2 = xml.IndexOf("</Description>"); 
       int l = xml.Length; 
       string errDesc = xml.Substring(idx1, idx2 - idx1); 
       throw new USPSManagerException(errDesc); 
      } 
      int i1 = xml.IndexOf("<DeliveryConfirmationLabel>") + 27; 
      int i2 = xml.IndexOf("</DeliveryConfirmationLabel>"); 
      package.ShippingLabel = StringToUTF8ByteArray(xml.Substring(i1, i2 - i1)); 
      return package; 
     } 

Я получаю ошибка

int i1 = xml.IndexOf("<DeliveryConfirmationLabel>") + 27; 

ответ

0

Решение вашей проблемы является то же самое на этой StackOverflow Вопрос- How to remove 'SAMPLE DO NOT MAIL' from USPS shipping API image

И вы можете найти шаги, чтобы это было сделано из моего ответа на этот вопрос или непосредственно после этого ссылка- https://stackoverflow.com/a/27936025/3748701

USPS возвращает метку в строке Base64, которую вам необходимо будет преобразовать в изображение. В моем приложении я должен был предоставить изображение как загружаемый файл, поэтому я вернул результат файла из действия контроллера. Ниже действие, которое получает строку метку Base64 из БД, преобразует его в изображение и обеспечивает как загружаемое Файл-

public ActionResult GetReturnShippingLabel(int orderId, bool showFull) 
     { 
      string shippingLabel = new OrderRepository().GetOrderReturnShippingLabel(orderId); 
      if (!string.IsNullOrEmpty(shippingLabel)) 
      { 
       byte[] bytes = Convert.FromBase64String(shippingLabel); 
       Image image = null; 
       MemoryStream ms = new MemoryStream(bytes, 0, bytes.Length); 
       ms.Write(bytes, 0, bytes.Length); 
       image = Image.FromStream(ms, true); 
       image.RotateFlip(RotateFlipType.Rotate90FlipNone); 
       if (!showFull) 
        image = image.GetThumbnailImage(326, 570, null, IntPtr.Zero); 
       ImageConverter converter = new ImageConverter(); 
       byte[] imgArray = (byte[])converter.ConvertTo(image, typeof(byte[])); 
       return File(imgArray.ToArray(), "image/gif"); 
      } 
      else 
      { 
       return null; 
      } 
     } 
+0

WHT является фактическим это ошибка mean.I'm уже прочитал this.but dn't решение получить –

+0

Основная проблема заключается в том, что вы должны подтвердить, что api не находится в тестовом режиме и находится в рабочем режиме. –

+0

если я использую на сервере производства, я получаю такую ​​же ошибку –

Смежные вопросы