qint16 chunk = temp.toInt(&ok, 10);
QString temp = dump;
qint16 chunk = temp.toInt(&ok, 16);
1: "HTTP/1.1 200 OK" 2: "HTTP/1.1 200 OKContent-Encoding: gzipContent-Type: text/xml;charset=Windows-1251Transfer-Encoding: chunkedDate: Tue, 16 Aug 2011 05:57:00 GMTServer: Apache (Unix)a?'\0''\0''\0''\0''\0''\0''\0'" 1: "153" 3: "153" true 153 4: 153 153 "mRNr?0u&??' ±8A?VieC«vuLa?IhB¤u??D?a|UU;now??=iwF\a?NLbU¦4eYN7o3§u}2so?%?jOv¬3: "GE{ x?§??"Cr?Cya4eiJOK?ed?M?>OIy?EA(ZF??-caaU6i?¬©?a<?«obuoi?E?i?" false 0
4: 153 153 "mRNr?0u&??' ±8A?VieC«vuLa?IhB¤u??D?a|UU;now??=iwF\a?NLbU¦4eYN7o3§u}2so?%?jOv¬
1: "HTTP/1.1 200 OKContent-Encoding: gzipContent-Type: text/xml;charset=Windows-1251Transfer-Encoding: chunkedDate: Tue, 16 Aug 2011 07:24:09 GMTServer: Apache (Unix)a?2: "153" true 339 3: 348 "mRNr?0u&??' ±8A?VieC«vuLa?IhB¤u??D?a|UU;now??=iwF\a?NLbU¦4eYN7o3§u}2so?%?jOv¬'\0'?^¦b|nO?¶,?1?"YA>V=mFaUI{µZ??dAUv?XvuZwy??V??Qq9GE{ x?§??"Cr?Cya4eiJOK?ed?M?>OIy?EA(ZF??-caaU6i?¬©?a<?«obuoi?E?i?F®gQpn?=cK1?3$~+O?I5Q??mMtOYk?k?e?[C?/??? ?E]M?q-ZO?k\?©eu4;iuu?[?/,o,?a?wCO?oqu?eY}&uWJ?un??v»?'\0''\0'" 2: "" false 0
dump.replace('\0', "'\\0'");
C++ (Qt)if(dump.contains(headers)) //Если сообщение = заголовок HTTP ответа{ dump = pClient->readAll(); //Считываем заголовок из буфера}
void QSslClient::slotReadyRead(){ try { bool ok; qint16 chunkSize = 1; //16-тиричный размер чанка QString tempDump; //Вспомогательная переменная для конвертирования размера чанка QByteArray dump; //Переменая для чтения данных dump = pClient->readLine(); //Считываем первую строку if(dump.contains(START_HTTP)) //Если строка = начало HTTP заголовка { while(!(dump.contains(END_HTTP))) //Пока не конец HTTP запроса { dump = pClient->readLine(); //Считываем данные } dump = pClient->read(2); //Считываем окончание HTTP заголовка - 2 символа новой строки } else { tempDump = dump; //Вспомогательная операция chunkSize = tempDump.toInt(&ok, 16); //Приводим считанное значение к 16-тиричному значению длины чанка qDebug() << chunkSize; while(chunkSize != 0) //Пока не считан нулевой чанк { dump = pClient->read(chunkSize); qDebug() << dump.replace('\0', "'\\0'"); dump = pClient->read(2); //Считываем окончание чанка dump = pClient->readLine(); //Считываем новый размер чанка tempDump = dump; chunkSize = tempDump.toInt(&ok, 16); //Приводим считанное значение к 16-тиричному значению длины чанка qDebug() << chunkSize; } } } catch(exception ex) { qDebug() << "###"; qDebug() << ex.what(); }}
1: "a" 2: 10 3: "?'\0''\0''\0''\0''\0''\0''\0'" 1: "153" 2: 339 3: "mRNr?0u&??' ±8A?VieC«vuLa?IhB¤u??D?a|UU;now??=iwF\a?NLbU¦4eYN7o3§u}2so?%?jOv¬'\0'?^¦b|nO?¶,?1?"YA>V=mFaUI{µZ??dAUv?XvuZwy??V??Qq9GE{ x?§??"Cr?Cya4eiJOK?ed?M?>OIy?EA(ZF??-caaU6i?¬©?a<?«obuoi?E?i?F®gQpn?=cK1?3$~+O?I5Q??mMtOYk?k?e?[C?/??? ?E]M?q-ZO?k\?©eu4;iuu?[?/,o,?a?wCO?oqu?eY}&uWJ?un??v»?'\0''\0'" 1: "0" 2: 0