Веб-сервер Puma выдает ошибку «Http malformed» при вызове из HttpClient из Azure IoT Dev Kit - PullRequest
0 голосов
/ 24 марта 2019

Я пишу код для 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?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...