2 / 2 / 2
Регистрация: 04.07.2010
Сообщений: 66
1

POST запрос на HTTPS

10.07.2012, 21:48. Показов 6445. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте!

мне нужно отправить POST запрос на страницу типа https://site.ru/index.php

для отправки на обычную страницу я использую такой кусок кода(и он работает):
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 HttpWebRequest web_request = (HttpWebRequest)HttpWebRequest.Create("http://site.ru/index.php");
                        web_request.Method = "POST";
                        web_request.AllowAutoRedirect = false;
                        web_request.ContentType = "application/x-www-form-urlencoded";
                        web_request.CookieContainer = tw_cookie;
 
                        string packet = "test_token=" + test_token +
                                        "&username=" + tw_login +
                                        "&password=" + tw_password;
 
                        Encoding w1251Encoding = Encoding.GetEncoding(1251);
 
                        byte[] bytes = w1251Encoding.GetBytes(packet); 
                        web_request.ContentLength = bytes.Length;
                        web_request.GetRequestStream().Write(bytes, 0, bytes.Length);
 
                        HttpWebResponse web_response = (HttpWebResponse)web_request.GetResponse();
                        string html = new StreamReader(web_response.GetResponseStream()).ReadToEnd();
но с отправкой HTTPS траблы...нужно как-то использовать SSL
немного погуглил и переписал так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
            System.Net.ServicePointManager.CertificatePolicy = new MyPolicy();
 
            HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url);
            webRequest.Method = "POST";
            webRequest.ContentType = "application/x-www-form-urlencoded";
            webRequest.CookieContainer = tw_cookie;
            webRequest.Proxy = null;
            webRequest.AllowAutoRedirect = false;
 
            Encoding w1251Encoding = Encoding.GetEncoding(1251);
            byte[] byteArray = w1251Encoding.GetBytes(requestBody);
 
            webRequest.ContentLength = byteArray.Length;
            webRequest.GetRequestStream().Write(byteArray, 0, byteArray.Length);
но проблема в том что этот код не отправляет данные пост запроса. Я проснифил с помощью HttpAnalyzer и там видно что данных в пост запросе нет и сервер мне возвращает Error 417 Expectation failed Explained.

тогда для отправки я использовал другой код, все также само как и раньше, но вместо:
C#
1
2
webRequest.ContentLength = byteArray.Length;
webRequest.GetRequestStream().Write(byteArray, 0, byteArray.Length);
я использую
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
            webRequest.BeginGetRequestStream(
                requestResult =>
                {
 
                    using (Stream postStream = webRequest.EndGetRequestStream(requestResult))
                    {
                        if (requestBody != null)
                        {
                            postStream.Write(byteArray, 0, byteArray.Length);
                        }
                    }
 
                    webRequest.BeginGetResponse(
                        responseResult =>
                        {
                            try
                            {
                                using (var response = (HttpWebResponse)webRequest.EndGetResponse(responseResult))
                                using (var streamResponse = response.GetResponseStream())
                                using (var streamRead = new StreamReader(streamResponse))
                                {
                                    var responseString = streamRead.ReadToEnd();
                                    var success = response.StatusCode == HttpStatusCode.OK;
 
                                    // do something here with response...
                                    MessageBox.Show(responseString.ToString());
                                }
                            }
                            catch (Exception ex)
                            {
                                MessageBox.Show(ex.Message);
                            }
                        },
                        null);
                },
                null);
но тогда данные пост запроса отправляются но два раза (смотреть скриншот)
POST запрос на HTTPS


а когда ставлю webRequest.ContentLength = byteArray.Length; - то вообще ничего не отправляется(((

подскажите пожалуйста рабочий способ..
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.07.2012, 21:48
Ответы с готовыми решениями:

Https Post запрос
Собственно сабж, обычным HttpWebRequest'om не отправляется. Как сделать так, чтобы отправился,

POST запрос по HTTPS не отправляется
Всем привет. На данном форуме очень много похожих тем, но они так и не раскрыли данного вопроса....

Как отправить POST или GET запрос на сайт, доступный только по протоколу HTTPS
День добрый, По протоколу HTTP когда получаю страницу все работает отлично, а когда протокол...

WebClient: При отправке на HTTPS данные POST задваиваются
using (WebClient webClient = new WebClient()) { string address =...

1
0 / 0 / 0
Регистрация: 11.04.2013
Сообщений: 9
15.05.2013, 17:25 2
Ага меня тоже интересует
0
15.05.2013, 17:25
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.05.2013, 17:25
Помогаю со студенческими работами здесь

Как выполнить HTTPS GET запрос
HttpWebRequest requestq = (HttpWebRequest)WebRequest.Create("https://market.dota2.net/sell/"); ...

Post запрос
Здравствуйте Мне нужно реализовать запрос в C# с параметрами Пример кода <form method="post"...

POST запрос
Вообщем надо отправить пост запрос с текстом... Но почему то выдает ошибку что не так? ...

Не отправляется POST запрос
При отправке Post запроса в ответ от сервера приходит сообщение, что post запрос был пустым, хотя я...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru