--- 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: