2017-02-02 7 views
5

के बिना स्पैनिश वर्णों के साथ यूआरएल में किसी शब्द के बीच और कैसे करें, मैंने किसी समस्या को हल करने के लिए बहुत समय लगाया था। मैं की तरहयूआरएल एन्कोडिंग

http://abc/app.aspx?deFleetLastName=MyName&Test123&deFleetFirstName=ààÃÅjeetaSisodiààÃÅ

एक 3 पार्टी एपीआई बोल रहा हूँ ऊपर यूआरएल में मैं MyName & Test123 की तरह एक शब्द के बीच & अनुमति देना चाहते हैं। इसके अलावा मैं स्पेनिश वर्णों जैसे ààÃÅjeetaSisodiààÃÅ

मैं स्पेनिश वर्णों और इसके कामकाजी जुर्माना की अनुमति देने के लिए नीचे दिए गए कोड का उपयोग कर रहा हूं।

AuthRequest = "&deTCIVRAccountNumber=" + SecCardReq.AdminNumber; 
       AuthRequest += "&deCISSTitle=" + SecCardReq.Title; 
       AuthRequest += "&deTCIVRCardHolderIdentFirstName=" + SecCardReq.FirstName; 
       AuthRequest += "&deTCIVRCardHolderIdentMiddleName=" + SecCardReq.MiddleName; 
       AuthRequest += "&deTCIVRCardHolderIdentLastName=" + SecCardReq.LastName; 
       AuthRequest += "&deCISSSecLastName=" + SecCardReq.SecLastName; 
       AuthRequest += "&deCISSNameOnCard=" + SecCardReq.NameOnCard; 
       AuthRequest += "&deTCIVRCardHolderIdentAddressLine1=" + SecCardReq.AddressLine1; 
       AuthRequest += "&deTCIVRCardHolderIdentAddressLine2=" + SecCardReq.AddressLine2; 
       AuthRequest += "&deTCIVRCardRegistrationCity=" + SecCardReq.City; 
       AuthRequest += "&deTCIVRCardHolderIdentificationStateProvince=" + SecCardReq.State; 
       AuthRequest += "&deTCIVRCardRegistrationPostalCode=" + SecCardReq.PostalCode; 
       AuthRequest += "&deTCIVRCardRegistrationCountry=" + SecCardReq.Country; 
       AuthRequest += "&deTCIVRCardRegistrationEmail=" + SecCardReq.Email; 
       AuthRequest += "&deCISSEmail2=" + SecCardReq.Email2; 
       AuthRequest += "&deTCIVRCardHolderIdentDOB=" + SecCardReq.DOB; 
       AuthRequest += "&deCISSMotherMaidenName=" + SecCardReq.MotherMaidenName; 
       AuthRequest += "&deTCIVRCardHolderIdentificationIdCode=" + SecCardReq.IdType; 
       AuthRequest += "&deCIAOtherIDDescription=" + SecCardReq.IDDescription; 
       AuthRequest += "&deTCIVRCardHolderIdentificationIdNumber=" + SecCardReq.IdNumber; 
       AuthRequest += "&deCIAIDIssueDate=" + Convert.ToString(SecCardReq.IDIssueDate); 
       AuthRequest += "&deCIAIDExpirationDate=" + Convert.ToString(SecCardReq.IDExpirationDate); 

       AuthRequest += "&deCIASIssuedBy=" + SecCardReq.IDIssuedBy; 
       AuthRequest += "&deCIAIDIssueState=" + SecCardReq.IDIssueState; 
       AuthRequest += "&deSecondaryCardTypeForAPI=" + SecCardReq.SecondaryCardTypeForAPI; 
       AuthRequest += "&deCIASHomePhoneCCode=" + SecCardReq.HomePhoneCountryCode; 
       AuthRequest += "&deTCIVRCardRegistrationPhone=" + SecCardReq.HomePhoneNumber; 
       AuthRequest += "&deCIASOfficePhoneCCode=" + SecCardReq.WorkPhoneCountryCode; 
       AuthRequest += "&deCISSWorkPhoneNumber=" + SecCardReq.WorkPhoneNumber; 
       AuthRequest += "&deCIASOfficePhoneExt=" + SecCardReq.WorkPhoneExt; 
       AuthRequest += "&deMobilePhCCode=" + SecCardReq.MobilePhoneNumberCCode; 
       AuthRequest += "&deCISSMobilePhoneNumber=" + SecCardReq.MobilePhoneNumber; 
       AuthRequest += "&deFaxNumberCCode=" + SecCardReq.HomeFaxNumberCCode; 
       AuthRequest += "&deCISSHomeFaxNumber=" + SecCardReq.HomeFaxNumber; 
       AuthRequest += "&deWorkFaxNumberCCode=" + SecCardReq.WorkFaxNumberCCode; 
       AuthRequest += "&deCISSWorkFaxNumber=" + SecCardReq.WorkFaxNumber; 
       AuthRequest += "&deCISSLanguageIndicator=" + SecCardReq.LanguageIndicator; 
       AuthRequest += "&deSecondaryCardPinAPI=" + SecCardReq.SecondaryCardPin; 
       AuthRequest += "&deSecondaryCardDealerNumberForAPI=" + SecCardReq.SecondaryCardDealerNumber; 
       AuthRequest += "&deIVREmbossingHotStamp=" + SecCardReq.EmbossingHotStamp; 
       AuthRequest += "&deSecondaryCardPrivacy=" + SecCardReq.SecondaryCardPrivacy; 
       AuthRequest += "&dePPCIPNumber=" + SecCardReq.PPCIPNumber; 
       AuthRequest += "&deIVREmbossingLine4=" + SecCardReq.EmbossingLine4; 
       AuthRequest += "&dePPCIPType=" + SecCardReq.PPCIPType; 
       AuthRequest += "&dePDDeliveryMechanism=" + SecCardReq.DeliveryMechanism; 
       AuthRequest += "&dePPCIPStatus=" + SecCardReq.PPCIPStatus; 
       AuthRequest += "&deSecondaryCardExpOptForAPI=" + (SecCardReq.SecondaryCardExpOpt != null ? SecCardReq.SecondaryCardExpOpt : ""); 
       AuthRequest += "&deSecondaryVCExpAfrTxnEntryAPI=" + SecCardReq.SecondaryVCExpAfrTxnEntry ?? ""; 
       AuthRequest += "&deSecondaryVCExprAfrDaysEntryAPI=" + SecCardReq.SecondaryVCExprAfrDaysEntry ?? ""; 
       AuthRequest += "&deSecondaryVCExprAfrDaysEntryDuration=" + SecCardReq.SecondaryVCExprAfrDaysEntryDuration ?? ""; 
       AuthRequest += "&deSecondaryVCExpOnDate=" + (SecCardReq.SecondaryVCExpOnDate != null ? SecCardReq.SecondaryVCExpOnDate : ""); 
       AuthRequest += "&deSecondaryVirtualCardLimit=" + SecCardReq.SecondaryVirtualCardLimit; 
       AuthRequest += "&deSecondaryVirtualCardResetAllowedForAPI=" + "0"; // As per new changes in SCP 
       AuthRequest += "&deCardValidFromDateAPI=" + SecCardReq.StartDate; // As per new changes in SCP 
       AuthRequest += "&deCardValidTillDateAPI=" + SecCardReq.StopDate; // As per new changes in SCP 
       AuthRequest += "&deBookingRefNumber=" + SecCardReq.BookingRefNumber; // As per new changes in SCP 
       AuthRequest += "&dePPSSN=" + SecCardReq.DecryptedSSN; 
       AuthRequest += "&deIVRSource=" + PortalCommon.PlateFormName; 
       AuthRequest += "&deMakerCheckerJobID=" + SecCardReq.jobID; 
       AuthRequest += "&deMakerCheckerFlag=" + SecCardReq.makerCheckerFlag; 

       AuthRequest += "&deExistingCustomerId=" + SecCardReq.CustomerId; 
       AuthRequest += "&deBankingCustomerIdAPI=" + SecCardReq.BankingCustomerId; 

       //IDS CIBANCO CHANGES 
       AuthRequest += "&dePoBCountry=" + SecCardReq.POBCountry; 
       AuthRequest += "&dePoBState=" + SecCardReq.POBStateProvince; 
       AuthRequest += "&dePoBCity=" + SecCardReq.POBCity; 
       AuthRequest += "&deNationality=" + SecCardReq.Nationality; 
       AuthRequest += "&deSACCode=" + SecCardReq.SACActivationCode; 
       AuthRequest += "&deCHCustomerIdDetailMsg=" + SecCardReq.IDDetails; 

       HttpRequestMsg = "User=" + (Convert.ToString(UserLogin)); 
       HttpRequestMsg += "&Password=" + HttpUtility.UrlEncode(Convert.ToString(UserPassword)); 
       HttpRequestMsg += "&Application=appCardinal"; 
       HttpRequestMsg += "&dbbServiceName=svcIVRSecondaryCard"; 
       HttpRequestMsg += "&dbbSystemExtLogin=1"; 
       HttpRequestMsg += "&deDBBServiceApiLevel=1.2"; 


HttpRequestMsg += AuthRequest; 
       HttpWebRequest httpRequest = (HttpWebRequest)WebRequest.Create(BaseUrl); 
       httpRequest.Method = "POST"; httpRequest.Headers.Add("X-Forwarded-For", objLoginUserInfo.HostIp); httpRequest.Headers.Add("Authorization", AddAuthorizationHeader()); 
       httpRequest.ContentType = "application/x-www-form-urlencoded"; 
       httpRequest.CookieContainer = new CookieContainer(); 

       string sOutput = string.Empty; 
       sOutput = CommonBLL.GetDBBIDServiceResponse(httpRequest, HttpRequestMsg); 



    public static string GetDBBIDServiceResponse(HttpWebRequest httpRequest, string httpRequestMsg) 
    { 
     string responseString = string.Empty; 
     try 
     { 
      Utilities.APITraceEnable(httpRequestMsg); 
      byte[] byteArray = Encoding.GetEncoding(1252).GetBytes(httpRequestMsg); 
      httpRequest.ContentLength = byteArray.Length; 
      Stream newStream = httpRequest.GetRequestStream(); //open connection 
      newStream.Write(byteArray, 0, byteArray.Length); // Send the data. 
      newStream.Close(); 
      HttpWebResponse getResponse = (HttpWebResponse)httpRequest.GetResponse(); 
      using (StreamReader sr = new StreamReader(getResponse.GetResponseStream())) 
      { 
       responseString = sr.ReadToEnd(); 
      } 
     } 
     catch (Exception ex) 
     { 
      CreateLogFile.CreateActivityLog("CommonBLL GetEncodingWindows1252 Exception =============== " + ex.Message, ex.StackTrace); 
     } 
     return responseString; 
    } 

समस्या तब होती है जब उपयोगकर्ता & char दर्ज करता है। & हम HttpUtility.UrlEncode उपयोग कर सकते हैं अनुमति देने के लिए, लेकिन मैं का उपयोग करने के HttpUtility.Urlencode

कृपया मुझे सुझाव है कि कैसे & और इसके बाद के संस्करण एपीआई में स्पेनिश पात्रों बुला

+0

कोई कारण नहीं है कि आप HttpUtility.Urlencode का उपयोग नहीं करना चाहते हैं? – Seano666

+0

@ सेनो 666 हां क्योंकि HttpUtility.Urlencode स्पेनिश चरित्र भी एनकोड करें। – Jaihind

+0

एक समाधान से अधिक कामकाज की तरह, हालांकि शायद आप "और" को "और" से बदल सकते हैं? – Ignas

उत्तर

3

आप के लिए% 26 का उपयोग कर सकते अनुमति दे सकते हैं नहीं करना चाहती अपने क्वेरी चर के भीतर & प्रतीक को प्रतिस्थापित करें। यह वही मायने रखता है (थोड़ा सा कैसे 20% अंतरिक्ष के बराबर है)। अपने चर को पार्स करें और उपरोक्त कोड के साथ & को प्रतिस्थापित करें और आपको सेट किया जाना चाहिए।

उदाहरण के लिए, आप MyName%26Test123 लिख सकता है जो के रूप में MyName&Test123

ही होगा http://www.degraeve.com/reference/urlencoding.php पात्रों

अद्यतन की जगह किया अलग कोड

मैं क्या के आधार पर करने के लिए एक संदर्भ के रूप में देखें अपने एपीआई निर्माण से देख सकते हैं, आप इसे आसानी से हल कर सकते हैं। आपके सभी डेटा, एकल वर्ग में संग्रहित है इसलिए प्रत्येक संपत्ति के माध्यम से चक्र है कि वस्तु के सभी गुण है कि प्रकार string के हैं और 26% कोड के साथ & की जगह के माध्यम से निम्नलिखित

public void ParseAmpersand() 
{ 
    foreach (PropertyInfo pi in this.GetType().GetProperties()) 
    { 
     if (pi.PropertyType == typeof(string) 
     { 
      ((string)pi.GetValue(this)).Replace("&", "%26"); 
     } 
    }    
} 

हो जाएगा ताकि चक्र का उपयोग कर। आपको बस इतना करना है कि आप इसे पहले से बनाए गए वर्ग में रखें (SecCardReq) और अपनी एपीआई स्ट्रिंग बनाने से पहले इसे कॉल करें।

+0

धन्यवाद। मैंने पहले ही इस समाधान की कोशिश की है और यह ठीक काम कर रहा है, समस्या यह है कि हमारे पास हमारे प्रोजेक्ट में हजारों टेक्स्टबॉक्स हैं। – Jaihind

+0

मैं हर नियंत्रण तक नहीं पहुंचना चाहता हूं। – Jaihind

+0

@ जयहिंद क्या आप थोड़ा और विस्तार से समझा सकते हैं? आपका प्रश्न बताता है कि आपको केवल एपीआई कॉल में भेजे जा रहे चर में इसे प्रतिस्थापित करने की आवश्यकता है। इसलिए, सबमिट किए जा रहे चर को पार्स करें, टेक्स्टबॉक्स मान – Takarii

संबंधित मुद्दे