W jaki sposób przerobić kod HttpClient na WebRequest?

0

Witam serdecznie. Posiadam działający kod napisany pod HttpClient

string sign = CalculateRegisterSign(model.sessionId, options.MerchantId, model.amount, model.currency, options.CRC);
            HttpClient client = new HttpClient();
            var content = new FormUrlEncodedContent(
                CombineParametersForRegister(options, model, sign)
                .ToDictionary(x => x.Name, x => x.StringValue)
                );
            var response = await client.PostAsync(
                SandboxRegisterUrl,
                content
                );
            string responseString = await response.Content.ReadAsStringAsync();
            return responseString;

Otrzymuję poprawnie token i 0 błędów.
error=0&token=73ECBC95F2-CAFA07-035AFF-25017658C8
Musze niestety zamienić to na stare WebRequest i zaczynają się schody. Aktualnie stanąłem w tym miejscu:

string sign = CalculateRegisterSign(model.sessionId, options.MerchantId, model.amount, model.currency, options.CRC);
            FormUrlEncodedContent content = new FormUrlEncodedContent(
                CombineParametersForRegister(options, model, sign)
                .ToDictionary(x => x.Name, x => x.StringValue)
                );
            byte[] byteContent = await content.ReadAsByteArrayAsync();
           
            WebRequest webRequest = HttpWebRequest.Create(SandboxRegisterUrl);
            webRequest.Method = "POST";
            webRequest.ContentLength = byteContent.Length;

            using(var dataStream = webRequest.GetRequestStream())
            {
                dataStream.Write(byteContent, 0, byteContent.Length);
                dataStream.Close();
            }
            
            WebResponse response = webRequest.GetResponse();
            string responseFromServer = string.Empty;
            using(var dataStream = response.GetResponseStream())
            {
                StreamReader reader = new StreamReader(dataStream);
                responseFromServer = reader.ReadToEnd();
            }
            response.Close();
            return responseFromServer;

Zwracane dane są takie, jakbym w ogóle nie przesyłał parametrów:
error=1&errorMessage=p24_merchantId:Incorrect merchant_id&p24_posId:Incorrect pos_id&p24_sessionId:Empty p24_sessionId&p24_email:Empty p24_email&p24_urlReturn:Empty p24_urlReturn&p24_urlCancel:Empty p24_urlCancel&p24_amount:Incorrect value.

Mogę Was prosić o pomoc?

5

Webrequest nawet nie ma pojęcia co to za typ ma być, wie tylko, że na dany adres url, ma wysłać posta z payloadem bajtów, bo nie dałeś mu znać jaki ContentType ma twoje żądanie.

powinno pomóc

webRequest.ContentType = "application/x-www-form-urlencoded";

1 użytkowników online, w tym zalogowanych: 0, gości: 1