Почтовый запрос не работает с Rest-Client, но с Фарадеем и Почтальоном все в порядке - PullRequest
0 голосов
/ 17 января 2019

У меня есть POST-запрос для входа на сайт тестирования Этот запрос прекрасно работает с гемами cURL или Faraday, но плохо работает с гемом rest-client.

1) С cURL

curl -X POST \
  'https://mysite.vn/api/tokens?email=my_email@gmail.com&password=my_password12&grant_type=password' \
  -H 'Content-Type: application/json' \
  -H 'Postman-Token: 5dea5d74-80e6-41b1-87bc-ee3c81cf754a' \
  -H 'cache-control: no-cache'
#

2) С Фарадеем

request_body = '{"email": "my_email@gmail.com", "password": "my_password12", "grant_type":"password"}'
conn = Faraday.new(:url => 'https://mysite.vn/api/tokens')
response_faraday = conn.post do |req|
      req.headers['Content-Type'] = 'application/json'
      req.body = request_body
end
puts response_faraday.status
#

3) С отдыхом-клиентом

new_payload = {
        email: 'my_email@gmail.com',
        password: 'my_password12',
        grant_type: 'password'
    }
    response_resclient = RestClient::Request.execute(
               method: :post,
               url: 'https://mysite.vn/api/tokens',
               payload: new_payload.to_json,
               headers:  {'Content-Type': 'application/json', 'Accept': 'application/json'})

помещает response_resclient.code

Для 1 и 2 оба значения верны. Все они возвращают статус 201, войдите успешно, но это не удалось с 3 - Rest_Client Статус 404

Я попытался использовать httplog для проверки, и вот файл журнала

Фарадей: D, [2019-01-18T00: 25: 10.228043 # 7764] DEBUG -: [httplog] Подключение: mysite.vn:443

D, [2019-01-18T00:25:11.355649 #7764] DEBUG -- : [httplog] Sending: POST http://mysite.vn:443/api/v2/tokens/
D, [2019-01-18T00:25:11.356434 #7764] DEBUG -- : [httplog] Data: {"email": "my_email@gmail.com", "password": "my_password12", "grant_type":"password"}
D, [2019-01-18T00:25:11.362419 #7764] DEBUG -- : [httplog] Status: 201
D, [2019-01-18T00:25:11.362419 #7764] DEBUG -- : [httplog] Benchmark: 0.053334 seconds
D, [2019-01-18T00:25:11.363419 #7764] DEBUG -- : [httplog] Response:
201

Rest_Client:

D, [2019-01-18T00:37:29.982352 #12472] DEBUG -- : [httplog] Connecting: mysite.vn:443
D, [2019-01-18T00:37:31.105052 #12472] DEBUG -- : [httplog] Sending: POST http://mysite.vn:443/api/v2/tokens/
D, [2019-01-18T00:37:31.105052 #12472] DEBUG -- : [httplog] Data:
D, [2019-01-18T00:37:31.111003 #12472] DEBUG -- : [httplog] Status: 404
D, [2019-01-18T00:37:31.112000 #12472] DEBUG -- : [httplog] Benchmark: 0.010938 seconds
D, [2019-01-18T00:37:31.112997 #12472] DEBUG -- : [httplog] Response:
<html>
<head><title>404 Not Found</title></head>
<body>
<center><h1>404 Not Found</h1></center>
<hr><center>nginx</center>
</body>
</html>

С гемом Rest-client, он возвращает ошибку 404 после отправки почтового запроса на mysite.vn с кодом 443. У меня нет идеала в этом случае. Не могли бы вы помочь мне объяснить этот случай. и как мне исправить это с Rest-Client

1 Ответ

0 голосов
/ 18 января 2019

Отладка Rest_Client может показывать, что Data пусто.

D, [2019-01-18T00:37:31.105052 #12472] DEBUG -- : [httplog] Data:

Кажется, вы относитесь к этому неправильно. Попробуйте вместо этого:

curl -X POST \
  'https://mysite.vn/api/tokens' \
  -H 'Content-Type: application/json' \
  -H 'Postman-Token: 5dea5d74-80e6-41b1-87bc-ee3c81cf754a' \
  -H 'cache-control: no-cache' \
  -d '{"email": "my_email@gmail.com", "password": "my_password12", "grant_type":"password"}'

См. man curl для получения дополнительной информации о -d flag.

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