Дмитрий Бочаров Опубликовано 27 мая, 2018 Поделиться Опубликовано 27 мая, 2018 (изменено) Требуется отправить запрос вида: POST /connect/token HTTP/1.1 Host: bba.nsal.cloud:5000 Content-Type: application/x-www-form-urlencoded Cache-Control: no-cache client_id=E45D3491-79EE-4EEA-92B2-22CEBE4BB8B5&client_secret=1234567&grant_type=client_credentials Но при отправке получаю, что body содержит спец. символы: '%3D' вместо "=", '%26' вместо "&" POST /connect/token HTTP/1.1 Cache-Control: no-cache Connection: Keep-Alive Content-Type: application/x-www-form-urlencoded Content-Length: 109 Host: bba.nsal.cloud:5000 client_id%3D03215B1D-7B0F-4E5C-A81A-81D8A1790915%26client_secret%3D95CMsyy6%26grant_type%3Dclient_credentials Каким образом отправить запрос без преобразования спец. символов? Отправляю вот так: RESTCli := TRESTClient.Create(rURL_Auth); with RESTCli do begin ContentType := 'application/x-www-form-urlencoded'; AutoCreateParams := True; Params.Clear; Params.AddHeader('Cache-Control',rCacheControl); Params.AddHeader('Connection',rConnection); end; RESTReq := TRESTRequest.Create(RESTCli); RESTResp := TRESTResponse.Create(RESTReq); with RESTReq do begin Client := RESTCli; AcceptCharset := 'UTF-8'; Response := RESTResp; Resource := 'connect/token'; Method := rmPOST; Params.Clear; AddBody(pFile); Execute; end; Result := RESTResp.Content; Изменено 27 мая, 2018 пользователем Дмитрий Бочаров Цитата Ссылка на комментарий
0 krapotkin Опубликовано 27 мая, 2018 Поделиться Опубликовано 27 мая, 2018 а без всяких RestClient простым HttpClient ?? Ingalime 1 Цитата Ссылка на комментарий
0 Дмитрий Бочаров Опубликовано 27 мая, 2018 Автор Поделиться Опубликовано 27 мая, 2018 При использовании IdHTTP все ОК! Сервер отрабатывает запрос. Спец символы не заменяются. Не может быть чтобы RESTClient не умел передавать запросы без изменения спец символов! Есть мнение, что просто что-либо не настроил, банально свойство не описал. Цитата Ссылка на комментарий
0 Евгений Корепов Опубликовано 27 мая, 2018 Поделиться Опубликовано 27 мая, 2018 '%3D' вместо "=", '%26' вместо "&" - это стандартная методика отправки данных, называется url encoding. Принимающая сторона производит обратный процесс url decoding. Это нормальный процесс экранирования спецсимволов для HTTP протокола. Если вы не хотите использовать encoding (хотя в ContentType := 'application/x-www-form-urlencoded' вы утверждаете обратное), по используйте опцию poDoNotEncode в опциях параметра (http://docwiki.embarcadero.com/Libraries/Tokyo/en/REST.Types.TRESTRequestParameterOption) А лучше используйте штатный THTTPClient (System.Net.HTTPClient) и будет счастье, потому как TRest, рожденный в недрах безумия Эмбы, преподнесет вам не мало неприятных сюрпризов. Равиль Зарипов (ZuBy) 1 Цитата Ссылка на комментарий
Вопрос
Дмитрий Бочаров
Требуется отправить запрос вида:
Но при отправке получаю, что body содержит спец. символы: '%3D' вместо "=", '%26' вместо "&"
Каким образом отправить запрос без преобразования спец. символов?
Отправляю вот так:
Ссылка на комментарий
3 ответа на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.