Tesla4o
@Tesla4o
Без пользы жизнь - безвременная смерть... В. Гете

Как обрезать заголовок в https ответе?

приходит такой ответ

HTTPS/1.1 200 OK
Content-Type: application/json; charset=utf-8
Content-Length: 48
Connection: Close

{
 "DATA": {
 "ERROR": "ANY USER IS LOGIN"
 }
}


Как мне оставить только json?
получаю ответ вот так

do {
            char buf[1024] = "\0";
            size_t bytes_transferred = sock.read_some(boost::asio::buffer(buf), ec);
            if (!ec) response.append(buf, buf + bytes_transferred);
        } while (!ec);
  • Вопрос задан
  • 152 просмотра
Решения вопроса 1
myjcom
@myjcom Куратор тега C++
в boost практически аналогично
#include <iostream>
#include <algorithm>
#include <iterator>
using namespace std;

int main()
{
    char buf[1500]{"HTTPS/1.1 200 OK\nContent-Type: \
                    application/json; charset=utf-8\n\
                    Content-Length: 48\
                    Connection: Close{\"DATA\": {\"ERROR\":\
                     \"ANY USER IS LOGIN\"}}"};
    auto bs{ find(begin(buf) , end(buf)  , '{' ) };
    auto es{ find(rbegin(buf), rend(buf) , '}' ) };
    copy(bs, es.base(), ostream_iterator<char>(cout));
}

{"DATA": {"ERROR": "ANY USER IS LOGIN"}}
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
fzfx
@fzfx
18,5 дм
удалить всё от нулевого байта до первого переноса строки включительно или использовать функции библиотеки, которая заточена на работу с http.
Ответ написан
Комментировать
@BadElectrician
C++ это хобби
#include
#include
#pragma warning(disable:4996)
Int main(){
char request[256]; char *p; int n=0;
// удаляем GET из строки request
// с таким содержанием
// GET/home.html/HTTP/1.1
//след функц возвращает индек первого
// элемента, указанного во втором арг
p = std::strstr(request, “/home”);
//вычисляем кол во знаков до “home”
n = p -request;
//записываем n-нулей в строку
std::strncpy(request, “\0”, n);
// в строке остаеться home.html/HTTP/1.1
// избавляемся от «хвоста»
p = std::strstr(request , “/HTTP “);
n = p - request;
char temp[256]; char *pt = temp;
std::strncpy(pt,request,n);
//вставляем нуль в кон стр
temp[n]=‘\0’; n++;
//все
//в стр temp остаеться home.html
return 0;
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы