diff -r 3f4e60990393 -r 9fdbfbe24161 src/HTTPHandler.h --- a/src/HTTPHandler.h Tue Mar 15 01:47:05 2022 +0100 +++ b/src/HTTPHandler.h Tue Mar 15 23:22:00 2022 +0100 @@ -148,18 +148,27 @@ request.headers.push_back(convertor.to_bytes(h.value)); } - HTTPClient::Response response = http->exchange(request); - relpipe::common::type::Integer responseCode = response.responseCode; + std::string body; + relpipe::common::type::Integer responseCode = -1; + + try { + HTTPClient::Response response = http->exchange(request); + responseCode = response.responseCode; + body = response.body; + + for (size_t i = 0; i < response.headers.size(); i += 2) { + responseHeaders.push_back(convertor.from_bytes(request.url)); + responseHeaders.push_back(convertor.from_bytes(response.headers[i])); + responseHeaders.push_back(convertor.from_bytes(response.headers[i + 1])); + } + } catch (const HTTPClient::Exception& e) { + body = e.what(); + // TODO: move error message into separate attribute? + } relationalWriter->writeAttribute(value); - relationalWriter->writeAttribute(convertor.from_bytes(response.body)); + relationalWriter->writeAttribute(convertor.from_bytes(body)); relationalWriter->writeAttribute(&responseCode, typeid (responseCode)); - - for (size_t i = 0; i < response.headers.size(); i += 2) { - responseHeaders.push_back(convertor.from_bytes(request.url)); - responseHeaders.push_back(convertor.from_bytes(response.headers[i])); - responseHeaders.push_back(convertor.from_bytes(response.headers[i + 1])); - } } public: