Перейти к содержанию
Fire Monkey от А до Я
  • 0

RESTRequest GET вместо POST


Edward Tarasov

Вопрос

Доброй ночи. подскажите пожалуйста, в чем может быть дело.  отправляется запрос:

  RESTRequest.ClearBody;
  RESTRequest.AddBody(ABody);
  RESTRequest.Method:=TRESTRequestMethod.rmGET;
  RESTRequest.Execute;

в ответ прилетает ошибка HTTP/1.0 405 Method Not Allowed

На сервере в роутах прописано

Route::match(['get'],'/getcity', [APIGetCity::class, 'GetCity']);

когда я дописываю в Route::match['get','post']... все работает. получается что на сервер прилетает post запрос или он его обрабатывает как post несмотря на то, что я явно указал перед отправкой - что типа rmGET...

С REST на вы и шепотом) подскажите пожалуйста в чем может быть дело.

Изменено пользователем Edward Tarasov
Ссылка на комментарий

Рекомендуемые сообщения

  • 0

Проблема на серверной стороне. 99.9%

Обычно такая шутка - результат редиректа, потому что редиректы POST c кодами 301 и 302 это всегда GET. Есть редиректы 307, 308, они оставляют тип исходного запроса.

Есть еще глубоко спрятанное и неочевидно названное свойство в THttpClient.RedirectsWithGET, там тоже можно поуправлять.

Короче.

1) отключите HandleRedirects и смотрите, что получится реально. Скорее всего будет приходить ответ, что произошел redirect, ищите на сервере, кто редиректит

2) придумайте что выбрать их вышеописанного для решения проблемы

Ссылка на комментарий
  • 0
7 часов назад, krapotkin сказал:

Проблема на серверной стороне. 99.9%

Обычно такая шутка - результат редиректа, потому что редиректы POST c кодами 301 и 302 это всегда GET. Есть редиректы 307, 308, они оставляют тип исходного запроса.

Есть еще глубоко спрятанное и неочевидно названное свойство в THttpClient.RedirectsWithGET, там тоже можно поуправлять.

Короче.

1) отключите HandleRedirects и смотрите, что получится реально. Скорее всего будет приходить ответ, что произошел redirect, ищите на сервере, кто редиректит

2) придумайте что выбрать их вышеописанного для решения проблемы

Блин.. все перерыл - не знаю что там может перенаправлять... вот результаты работы REST debugger - видно что при отправке get все норм работает - они и понятно, в роутах только get прописан. а при post вылетает ошибка, та же что и вылетает при выполнении  

RESTRequest.ClearBody;
  RESTRequest.AddBody(ABody);
  RESTRequest.Method:=TRESTRequestMethod.rmGET;
  RESTRequest.Execute; 

Хотя указан же GET

1.png

2.png

Изменено пользователем Edward Tarasov
Ссылка на комментарий
  • 0

Ну в принципе, что и следовало ожидать - мне отвечал сервер, неявно правда, что "идешь на*ер, по причине конченный далб**б"?

Но так как !!смотри выше, распознать я это смог спустя день. 

короче -  параметры в GET запросе, в теле не передаются! (вдруг кто возьмет для реализации пример отсюда - 

и попытается его применить для себя) ?

Тему наверно можно закрывать.

Ссылка на комментарий
  • 0

Если честно, я не доверяю ни RESTRequest ни RESTdebugger, который на нем и сделан))

Именно на RESTdebugger я долбался пару дней ровно с этой "фичей".

Потом просто поставил в браузер расширение RESTED и все нормально.

Пользуюсь THttpClient и все спокойно ))

 

Ссылка на комментарий
  • 0

Я сейчас перечитал, понял, что плохо сформулировал. Не "проблема на серверной стороне", а "проблема 99.9% именно в том что сервер редиректит". ))

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...