Уже была подобная статья про отправку запросов с параметрами методом POST, а также был подобный пост, который касался отправки файлов методом POST и был на порядок сложнее того, что я напишу сейчас. Данные во второй статье отправляются в кодированном виде и мы делали специальный модуль для декодирования параметров запроса, а также передаваемых файлов. GET запрос в данном случае будем передавать в традиционном виде, то есть URI+параметры, например так…
1 2 |
ProtocolServerAndPort+ '/CreateThumbnailOnServer?login=admin&password=qwerty&someparam=someparamvalue |
В качестве примера я возьму проект на UniGUI, который в свою очередь использует idHTTPServer по умолчанию, в один из модулей я добавил idHTTP, таким образом у нас есть всё, для того, чтобы отправить и принять запрос.
Отправка GET запроса
1 2 3 4 5 6 |
... ProtocolServerAndPort:='http://'+IdIPWatch.LocalIP+':'+UniServerModule.Port.ToString; ServerResponse:=IdHTTP.Get(ProtocolServerAndPort+ '/CreateThumbnailOnServer?login=admin&password=qwerty&someparam=someparamvalue'); MainForm.UniSession.AddJS(' alert('''+ServerResponse+'''); '); ... |
Прием GET запроса на стороне сервера (UniServerModule)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
procedure TUniServerModule.UniGUIServerModuleHTTPCommand(ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo; var Handled: Boolean); var SomeParam:string; begin //ARequestInfo.Params if ARequestInfo.URI=('/CreateThumbnailOnServer') then begin SomeParam:= ARequestInfo.Params.Values['SomeParam']; AResponseInfo.ResponseNo:=200; AResponseInfo.ContentText:='wow'; AResponseInfo.WriteContent; end; |
Протестируем наш код…
Итак, всё работает