43 / 39 / 12
Регистрация: 05.01.2009
Сообщений: 394
1

Признак окончания данных от веб сервера

02.04.2010, 01:24. Показов 996. Ответов 0
Метки нет (Все метки)

Добрый день, есть код.

Послав запрос: sslStream.Write(Encoding.UTF8.GetBytes (AuthRequest (login , pass, product) ) );
я получаю ответ от сервера, получается несколькими порциями, и при попытке получить очередную порцию поток блокируется.

int br = sslStream.Read(bytes, 0, bytes.Length);
String Response = Encoding.UTF8.GetString(bytes, 0, br);
br = sslStream.Read(bytes, 0, bytes.Length);
Response += Encoding.UTF8.GetString(bytes, 0, br);

// вот тут результат уже не возвращается, поток блокируется
// br = sslStream.Read(bytes, 0, bytes.Length);
// Response += Encoding.UTF8.GetString(bytes, 0, br);

Подскажите пожалуйста, каков признак окончания ответа от сервера.
Есть вариант парсить "Content-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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
   class YoutubeUploader : TcpClient
    {
        string AuthToken ;
 
        static bool ValidateServerCertificate(
              object sender,
              X509Certificate certificate,
              X509Chain chain,
              SslPolicyErrors sslPolicyErrors)
        {
            return true;
        }
 
        SslStream sslStream = null;
 
        string AuthRequest(string login , string pass, string product)
        {
            String sPost = "Email=" + login+ "&Passwd=" + pass + "&service=youtube&source=" +product;
            string sendData = "POST /youtube/accounts/ClientLogin HTTP/1.1\r\n" +
                               "Host: www.google.com\r\n" +
                               "Content-Type: application/x-www-form-urlencoded; charset=UTF-8\r\n" +
                               "Content-Length: " + sPost.Length + "\r\n\r\n" +
                               sPost;
            return sendData;                 
        }
        
        public bool Auth(string login, string pass, string product)
        {
            try
            {
                Connect("www.google.com", 443);
            }
            catch (Exception ex)
            {
                return false;
            }
            sslStream = new SslStream(this.GetStream(),
                                     false,
                                     new RemoteCertificateValidationCallback(ValidateServerCertificate),
                                     null);
            sslStream.AuthenticateAsClient("www.google.com");
        
            byte[] bytes = new byte[1024];
            sslStream.Write(Encoding.UTF8.GetBytes (AuthRequest (login , pass, product) ) );
            
            int br = sslStream.Read(bytes, 0, bytes.Length);
            String Response = Encoding.UTF8.GetString(bytes, 0, br);
             br = sslStream.Read(bytes, 0, bytes.Length);
             Response += Encoding.UTF8.GetString(bytes, 0, br);
 
           //  br = sslStream.Read(bytes, 0, bytes.Length);
           //  Response += Encoding.UTF8.GetString(bytes, 0, br);
 
           //  br = sslStream.Read(bytes, 0, bytes.Length);
           //  Response += Encoding.UTF8.GetString(bytes, 0, br);
 
           // while (sslStream.)
          //  {
                // Response += Encoding.UTF8.GetString(bytes, 0, br);
                // br = sslStream.Read(bytes, 0, bytes.Length);
            //}                
            return true;
        }
    }
Добавлено через 25 минут
Не получается ли что 1я порция это заголовок ответа
а 2я хтмл код?

дело в том что, что я работаю с хттп чеерз httpwebrequest / httpwebresponse
через сокеты не приходилось
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.04.2010, 01:24
Ответы с готовыми решениями:

Не работает признак окончания ввода(признак-0)
Признак окончания ввода 0; подскажите люди добрые что не так?) #include <iostream>...

Бинарные файлы. Признак окончания файла
Здравствуйте Возникла проблема при чтении с бинарного файла, программа не может найти конец файла...

Признак окончания потока для буферного итератора
Собственно надоело вводить ctrl+z для ввода признака окончания потока, засим возник вопрос а...

С клавиатуры вводятся последовательность целых чисел.0 - признак окончания последовательности
С клавиатуры вводятся последовательность целых чисел.0 - признак окончания...

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.04.2010, 01:24

С клавиатуры вводятся последовательность целых чисел 0 - признак окончания последовательности
определит ьверно ли утверждение количество нечетных чисел последовательности меньше количества...

Прочитать строку с клавиатуры (признак окончания строки – нажатие Enter)
Прочитать строку с клавиатуры (признак окончания строки – нажатие Enter) и добавить его в другой,...

Пользователь вводит любые числа с клааиатуры,признак окончания 0. Проверить если в данной последовательности 5
Пользователь вводит любые числа с клавиатуры признак окончания 0, Проверить,если в данной...

Ввод пользователем заранее НЕ известного количества чисел(выбрать признак окончания ввода-число 999)
Ввод пользователя заранее НЕ известного количества чисел(выбрать признак окончания ввода-число 999)...


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

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

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