Во-первых, два свойства Request
, которые вы устанавливаете, не имеют смысла в запросе GET
, и вы вообще не должны устанавливать какие-либо свойства Response
.
// get rid of these assignments
//IdHTTP1.Request.ContentType := 'text/plain' ;
//IdHTTP1.Response.ContentType := 'text/plain' ;
//IdHTTP1.Response.Charset := 'ISO-8859-1,utf-8;q=0.7,*;q=0.3' ;
//IdHTTP1.Request.CharSet:= 'ISO-8859-1,utf-8;q=0.7,*;q=0.3 ' ;
IdHTTP1.HTTPOptions := IdHTTP1.HTTPOptions + [hoNoProtocolErrorException];
IdHTTP1.Get('http://192.168.25.965:8541/rest/SearchCard('+MYCARD+')', Stream);
Во-вторых, используя текущую версию Indy, я не могу воспроизвести вашу проблему. TIdHTTP.Get()
отправляет указанный URL как есть, он не делает никаких предположений о символах в нем (вы несете ответственность за кодировку URL). В моем тестировании 123YH963
работает просто отлично. Вот реальный отправляемый HTP-запрос:
GET /rest/SearchCard(123YH963) HTTP/1.1
Хост: 192.168.25.965:8541
Принять: text/html,application/xhtml+xml,application/xml;q=0.9 ,/;q=0.8
Агент пользователя: Mozilla/3.0 (совместимый; Indy Library)
Как видите, полный текст MYCARD
находится в запрошенном ресурсе, как и ожидалось. Таким образом, любое усечение должно происходить на стороне сервера, а не в самом TIdHTTP
.
Вы уверены, что правильно форматируете URL-адрес? Вы уверены, что на самом деле это должно быть отправлено так:
/rest/SearchCard(123YH963)
А не что-то подобное вместо этого?
/rest/SearchCard%28123YH963%29
/rest/SearchCard/123YH963
/rest/SearchCard?param=123YH963
person
Remy Lebeau
schedule
12.07.2016