Всем доброе время!.
такой вопрос: клиент-серверная часть приложения, к серверу подключаюсь через LTCPComponent, соединение проходит нормально и пакеты бегают в оба направления, но только если указан порт (например 8080) и адрес (например 129.46.48.142) . Если же серверная часть лежит в каталоге то все-облом!
( если смотреть в браузере то строка выглядит таким образом http: //129.46.48.142:8080/wpkr/server4.php (пробел поставил что б не было гп/ссылки) )
Подскажите пожалуйста как добавить путь?
Заранее спасибо.
ps. с английским не очень, но https://lnet.wordpress.com/usage/usage-guide/ вдуплял сколько мог... может кто на русском даст ссылки?
подключение через inet-компоненты/строка адреса
Модератор: Модераторы
По вопросу в личке я ничего нового сказать не могу. Там viewtopic.php?f=5&t=10806 почти всё что я сделал по http было указано. Могу только весь текст из файла выложить.
Вот что у меня было по http:
Вот что у меня было по http:
Код: Выделить всё
unit admain;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, lhttp, lHTTPUtil, lNet, FileUtil, Forms, Controls,
Graphics, Dialogs, StdCtrls, LCLIntf;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
ms: TStream;
done:boolean;
function ClientInput(ASocket: TLHTTPClientSocket; ABuffer: pchar; ASize: integer): integer;
procedure ClientDisconnect(ASocket: TLSocket);
procedure ClientDoneInput(ASocket: TLHTTPClientSocket);
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
function TForm1.ClientInput(ASocket: TLHTTPClientSocket; ABuffer: pchar; ASize: integer): integer;
begin
ShowMessage(ABuffer);
memo1.Text:=ABuffer;
ms.Write(aBuffer[0], aSize);
end;
procedure TForm1.ClientDisconnect(ASocket: TLSocket);
begin
//DebugLn('Disconnected.');
done := true;
end;
procedure TForm1.ClientDoneInput(ASocket: TLHTTPClientSocket);
begin
//DebugLn('done.');
ASocket.Disconnect;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
httpclient: TLHTTPClient;
sHost, sUrl: string;
sPort: word;
begin
try
ms := TMemoryStream.Create;
httpclient := TLHTTPClient.Create(nil);
httpclient.OnDisconnect := @ClientDisconnect;
httpclient.OnDoneInput := @ClientDoneInput;
httpclient.OnInput := @ClientInput;
DecomposeURL('http://solvpro.ru/index.php', sHost, sUrl, sPort);
showmessage(inttostr(sPort));
httpclient.Method := hmPost;
httpclient.Port := sPort;
httpclient.Host := sHost;
httpclient.URI := sUrl;
httpclient.AddExtraHeader('Keep-Alive: 300');
httpclient.AddExtraHeader('Connection: keep-alive');
//httpclient.AddExtraHeader('Content-Length: 111'); // <-XML length
httpclient.AddExtraHeader('Content-Type: text/xml');
httpclient.AddExtraHeader(LineEnding);
httpclient.AddExtraHeader(
'<service.request>' + LineEnding +
'<sign>SIGN</sign>' + LineEnding + '</service.request>'
);
httpclient.SendRequest;
Done := false;
while not Done do
HttpClient.CallAction;
//memo1.Lines.LoadFromStream(ms);
finally
httpclient.Free;
ms.Free;
end;
end;
end.
странно, я пробовал практически также (да не совсем!)- у меня с сервера ответ не идет. правда я передаю xml и получаю xml.
Скажите, а сам компонент с палитры вы не брали, так получается?
Добавлено спустя 1 час 53 минуты 28 секунд:
кстати, интересный вопрос: а как сменить порт на 8080 ?
Скажите, а сам компонент с палитры вы не брали, так получается?
Добавлено спустя 1 час 53 минуты 28 секунд:
кстати, интересный вопрос: а как сменить порт на 8080 ?
helga
Используйте компонент TLHTTPClientComponent, как Вам подсказал предыдущий товарищ. Там можно указать и хост и порт и то, что после хоста идёт, то что Вы зовёте каталогом. Например для URL=http://www.freepascal.ru:8080/forum/viewtopic.php
Используйте компонент TLHTTPClientComponent, как Вам подсказал предыдущий товарищ. Там можно указать и хост и порт и то, что после хоста идёт, то что Вы зовёте каталогом. Например для URL=http://www.freepascal.ru:8080/forum/viewtopic.php
Код: Выделить всё
LHTTPClientComponen1.Host:='www.freepascal.ru';
LHTTPClientComponen1.Port:=8080;
LHTTPClientComponen1.URI:='/forum/viewtopic.php';