2016-10-11 7 views
0

У меня есть проблема с запросом JSon :( У меня есть классПолучить из JSON Wt :: Http :: Request и запрос

class ForumCreate : public Wt::WResource 

и функция

virtual void handleRequest(const Wt::Http::Request& request, Wt::Http::Response& response) 

request.contentType() является применение/json. Как получить json от запроса? (

Может быть, я должен использовать что-то еще, чтобы получить json? Задача: Пользователь отправляет http-запрос с json на статическую URL-адрес. Мне нужно проанализировать json-файл и отправить json-response.

+0

Это просто быстрый взгляд, но handleRequest, вероятно, предназначен для http-сервера. Я бы ожидал, что вы захотите чего-то, что просто возьмет объект Http :: Response, а не запрос. – xaxxon

+0

Да, у меня есть http-сервер. Пользователь отправляет http-запрос на этот сервер. И функция handleRequest анализирует этот запрос. – djkah11

ответ

0

Вы собираетесь нужно проанализировать данные из входного потока, представленной

std::istream & Wt::Http::Request::in (  ) const 

https://www.webtoolkit.eu/wt/doc/reference/html/classWt_1_1Http_1_1Request.html#a768a65ceb3c0bf013b57c3de04b19041

Это должно быть сырым текст JSON.

+0

std :: string temp7; while (std :: getline (request.in(), temp7)); – djkah11

+0

Это правильно! Congrats – djkah11

0

В Wt есть встроенный анализатор JSON. Я использую это так:

Wt::Json::Object bodyContent; 

try 
{ 
    Wt::Json::parse(fromIstream(request.in()), bodyContent); 
} 
catch(std::exception e) 
{ 
    ... 
} 

Где fromIstream следующая:

std::string fromIstream(std::istream &stream) 
{ 
    std::istreambuf_iterator<char> eos; 
    return std::string(std::istreambuf_iterator<char>(stream), eos); 
} 

Имейте в виду, что Wt :: Json :: синтаксического анализа() сгенерирует исключение, в случае некорректного ввода. Надеюсь, поможет!