2015-09-29 1 views
0

Я пытаюсь имитировать следующий локон команда, которая работает отлично:От Руби Perl, сообщение данных исчезает

curl -k -i -d @content.json -H "Content-Type: application/json" -H "Accept: applicaztion/json" https://localhost:909/api/authenticateUser 

Я имитируя завиток команду в Ruby/рельсах. Я использую драгоценный камень rest-client. Цель - это API, написанный в Perl старого стиля. Проблема заключается в том, что API не «видит» полезный груз, который отправляется в новом коде Ruby:

pload = '<string>'.to_json 
response = RestClient::Request.execute(url: 'https://localhost:909/api/authenticateUser', method: :post, payload: pload, accept: :json, content_type: :json, verify_ssl: false) 

Что идет не так? Является ли мой код Ruby плохим, или код Perl «слишком глупый/старый», чтобы получить полезную нагрузку от рубина. Это код Perl:

my $data = $cgi->param('POSTDATA') || ""; 

Я склонен думать, что проблема с моим рубиновым кодом, так как старый код Perl получает полезную нагрузку должным образом от завитка команды выше, и от другого старого кода Perl.

Спасибо за помощь.

+0

вы смотрели на просьбу о том, Curl роды tes по сравнению с тем, который генерирует Ruby? –

+0

Действительно ли вы отправляете Accept: applica ** z ** tion/json с вашим завитком или была сделана ошибка при копировании его в SO? – hobbs

+0

'curl -d' выводит каретки и новые строки из данных, которые он публикует, возможно, сервер зависит от всех данных, находящихся в одной строке, каким-то образом? – hobbs

ответ

1

Для POSTDATA быть заселенной,

  1. Запрос должен иметь содержание-длина заголовка
  2. Значение заголовка Content-Length просьбе должна быть отлична от нуля.
  3. Метод запроса должен быть POST.
  4. Запрос должен иметь заголовок Content-Type.
  5. Значение заголовка Content-Type просьбе не должна включать в себя любое из следующих действий:

    • применение/х-WWW-форм-urlencoded
    • многочастного/форм-данных
    • приложения/XML
    • многочастному/связанные
+0

Я не помещаю «контентную длину», я думаю, что это безопасное предположение, что клиент-клиент делает это за кулисами. Метод запроса - это сообщение. Content-Type - это «application/json» (то же, что и в curl). – pirhac