2009-08-12 8 views
0

Je suis en train de publier sur une URL, afin de générer une page. L'URL est spécifiée ailleurs dans ma demande et provient d'une banque.HttpWebRequest/HttpWebResponse Base 64 problème

Les paramètres i besoin de spécifier sont: PAREQ - c'est une longue chaîne, spécifiée ailleurs dans ma demande TermUrl - une url la banque utilise pour republier à (ma demande) MD - une chaîne aléatoire pour identifier l'ordre.

Le paramètre pertinent est ici le PAREQ -

J'ai le code ci-dessous sur la page, et Response.Write (réponse) à la fin, de créer une page de la demande. Cependant, je reçois une erreur renvoyée par le message PaReq message non codé en base.

De mon code, vous pouvez voir que j'ai essayé de base 64 encode, mais quelque part je vais mal ....

   HttpWebRequest req = (HttpWebRequest)WebRequest.Create(acsUrl); 

      byte[] toEncodeAsBytes = System.Text.ASCIIEncoding.ASCII.GetBytes(pareq); 

      string data = String.Format("PaReq={0}&TermUrl={1}&MD={2}", System.Convert.ToBase64String(toEncodeAsBytes), "www.return.com", "wsdfskdjglke"); 
      byte[] buffer = Encoding.UTF8.GetBytes(data); 

      req.Method = "POST"; 
      req.ContentType = "application/x-www-form-urlencoded"; 
      req.ContentLength = buffer.Length; 
      req.CookieContainer = new CookieContainer(); // enable cookies 

      Stream reqst = req.GetRequestStream(); // add form data to request stream 
      reqst.Write(buffer, 0, buffer.Length); 
      reqst.Flush(); 
      reqst.Close(); 

      HttpWebResponse res = (HttpWebResponse)req.GetResponse(); 

      Stream resst = res.GetResponseStream(); 
      StreamReader sr = new StreamReader(resst); 
      string response = sr.ReadToEnd(); 

Répondre

0

Vous devez encoder (en utilisant Server.Encode) votre Base64 avant de le concaténer avec votre chaîne.

+0

Avez-vous un exemple? Je n'arrive pas à trouver Server.Encode ...? – Alex

+0

@Alex, je suis désolé, j'ai oublié de vous demander si vous utilisez asp.net ou windowsforms, dans ce cas vous pouvez utiliser "HttpUtility.UrlEncode (string)" à la place. – Cleiton

+0

J'ai utilisé ce qui suit: chaîne de données = String.Format ("PaReq = {0} & TermUrl = {1} & MD = {2}", Server.UrlEncode (pareq), "www.return.com", "wsdfskdjglke "); Server.UrlEncode – Alex

Questions connexes