0

ページを生成するために、URL に投稿しようとしています。URL はアプリケーションの別の場所で指定されており、銀行からのものです。

指定する必要があるパラメーターは次のとおりです。Pareq - これは長い文字列で、アプリケーションの他の場所で指定されています。 TermUrl - 銀行が (アプリケーション) にポストバックするために使用する URL MD - 注文を識別するためのランダムな文字列。

ここで関連するパラメータは pareq です -

リクエストからページを作成するために、ページに以下のコードがあり、最後に Response.Write(response) があります。ただし、投稿された url からエラーが返されます-base64 でエンコードされていない PaReq メッセージ。

私のコードから、ベース 64 でエンコードしようとしたことがわかりますが、どこかで間違っています....

                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();
4

1 に答える 1

0

文字列と連結する前に、Base64文字列を(Server.Encodeを使用して)エンコードする必要があります。

于 2009-08-12T11:55:42.090 に答える