Я пишу код для MXCHIP и хочу использовать HttpClient из устройства Azure IoT для подключения к моей собственной веб-службе.
Код «работает», так как моя конечная точка называется, но сервер (Sinatra с веб-сервером Puma) жалуется, что http-запрос искажен, и из моих исследований видно, что это потому, что клиент, похоже, запрашивает SSL. Но ничто в моем коде не делает этого.
У меня есть простой сервер Sinatra:
require 'sinatra'
require 'json'
set :bind, '0.0.0.0'
get '/door' do
puts "X #{params['axis_x']}"
puts "Y #{params['axis_y']}"
puts "Z #{params['axis_z']}"
content_type :text
puts JSON.pretty_generate(request.env)
end
и клиент ничего не делает (некоторый код удален для удобства чтения):
HTTPClient *httpClient = new HTTPClient(HTTP_GET, url);
const Http_Response *result = httpClient->send();
if (result == NULL) {
/* error handling */
}
delete httpClient;
код работает и запрос GET с некоторыми параметрами запроса поступает на сервер, но сервер всегда печатает:
HTTP parse error, malformed request (): #<Puma::HttpParserError:
Invalid HTTP format, parsing fails.>
Мой поисковый запрос говорит мне, что это то, что я мог бы получить, если бы использовал URL, начинающийся с "https://",, но я этого не делаю. Он начинается с http://
Я получил вызов и все параметры запроса, так почему Puma печатает эту ошибку?
Также, если я создаю URL в браузере, я не получаю эту ошибку в Puma. Так что же такое проблемы с Azure IoT DevKit HttpClient?