Свойства Socket
это особое свойство, что обеспечивает более легкий доступ к функциональным возможностям сокета конкретного, когда ток IOHandler
точки значения свойства в компоненте в TIdIOHandlerSocket
потомка , В противном случае это nil
. Не следует устанавливать свойства Socket.Host
и Socket.Port
. TIdTCPClient.Connect()
обрабатывает это внутренне для вас. Чтобы установить Host/Port, вместо этого вам необходимо использовать свойства TIdTCPClient.Host
и TIdTCPClient.Port
. Однако TIdHTTP
является исключением из этого правила, потому что TIdHTTP
устанавливает хост/свойства портов внутренне для вас на основе URL вы передаете к нему, например:
host := TidHTTP.Create;
host.Get('http://system.human.com.br/', ...); // <-- sets Host and Port for you!
host := TidHTTP.Create;
host.Post('http://system.human.com.br/', ...); // <-- sets Host and Port for you!
так что не свойства Host/Port вручную. Это всегда верно в каждой версии Indy с компонентом TIdHTTP
.
Публикация TIdMultiPartFormDataStream
объект заставляет заголовок Content-Type
быть multipart/form-data
. Вы не можете переопределить это. Попытка отправить MIME-кодированные данные с использованием application/x-www-form-urlencoded
просто неверна. Если вы действительно хотите отправить application/x-www-form-urlencoded
данные, вам необходимо отправить TStrings
объект вместо, например:
data := TStringList.Create;
data.Add('name=value');
...
host.Post(strSMStext , data);
При написании TIdMultipartFormDataStream
или TStrings
, пусть TIdHTTP.Post()
решить, какой Content-Type
значение использовать, не устанавливайте его вручную ,
Глядя на код библиотеки вы предоставили ссылку, следующие изменения должны быть сделаны:
Снимите разводка http.Port
и http.Host
свойств от TSMSSender
конструктора.
в TSMSSender.SimpleSend()
, перед именем желаемого хоста в URL создается:
//StrEnvio := '/GatewayIntegration/msgSms.do?dispatch=send' +
StrEnvio := 'http://system.human.com.br/GatewayIntegration/msgSms.do?dispatch=send' +
в TSMSSender.MultipleSend()
, удалить присвоение http.Request.ContentType
имущества.
Почему вы устанавливаете хост или порт вообще? Вы можете указать адрес, когда вы вызываете 'Get' или' Post'. –
Assert (Assigned (Host.Socket)) – bummi
Я не сделал этого кода. Это от human.com.br, как сказано в вопросе. Но они сказали, что не поддерживают нас indy10 или delphi-xe3. – PSyLoCKe