146 for (const HeaderDefinition& h : requestHeaders) { |
146 for (const HeaderDefinition& h : requestHeaders) { |
147 request.headers.push_back(convertor.to_bytes(h.name)); |
147 request.headers.push_back(convertor.to_bytes(h.name)); |
148 request.headers.push_back(convertor.to_bytes(h.value)); |
148 request.headers.push_back(convertor.to_bytes(h.value)); |
149 } |
149 } |
150 |
150 |
151 HTTPClient::Response response = http->exchange(request); |
151 std::string body; |
152 relpipe::common::type::Integer responseCode = response.responseCode; |
152 relpipe::common::type::Integer responseCode = -1; |
|
153 |
|
154 try { |
|
155 HTTPClient::Response response = http->exchange(request); |
|
156 responseCode = response.responseCode; |
|
157 body = response.body; |
|
158 |
|
159 for (size_t i = 0; i < response.headers.size(); i += 2) { |
|
160 responseHeaders.push_back(convertor.from_bytes(request.url)); |
|
161 responseHeaders.push_back(convertor.from_bytes(response.headers[i])); |
|
162 responseHeaders.push_back(convertor.from_bytes(response.headers[i + 1])); |
|
163 } |
|
164 } catch (const HTTPClient::Exception& e) { |
|
165 body = e.what(); |
|
166 // TODO: move error message into separate attribute? |
|
167 } |
153 |
168 |
154 relationalWriter->writeAttribute(value); |
169 relationalWriter->writeAttribute(value); |
155 relationalWriter->writeAttribute(convertor.from_bytes(response.body)); |
170 relationalWriter->writeAttribute(convertor.from_bytes(body)); |
156 relationalWriter->writeAttribute(&responseCode, typeid (responseCode)); |
171 relationalWriter->writeAttribute(&responseCode, typeid (responseCode)); |
157 |
|
158 for (size_t i = 0; i < response.headers.size(); i += 2) { |
|
159 responseHeaders.push_back(convertor.from_bytes(request.url)); |
|
160 responseHeaders.push_back(convertor.from_bytes(response.headers[i])); |
|
161 responseHeaders.push_back(convertor.from_bytes(response.headers[i + 1])); |
|
162 } |
|
163 } |
172 } |
164 |
173 |
165 public: |
174 public: |
166 |
175 |
167 void endOfPipe() { |
176 void endOfPipe() { |