delphi 7 http请求转换成字符串

时间:2010-11-03 22:24:36

标签: delphi http delphi-7

我想直接将一个网址加载到没有任何数据流的字符串中,最好的方式是什么,internet open url有效,但似乎不太清楚。

我不想使用任何组件来阅读一些短信

4 个答案:

答案 0 :(得分:6)

Delphi 6及更高版本附带Indy,它有一个TIdHTTP客户端组件,例如:

uses
  ..., IdHTTP;

var
  Reply: String;
begin
  Reply := IdHTTP1.Get('http://test.com/postaccepter?=msg1=3444&msg2=test');
    ...
end;

或者:

uses
  ..., IdHTTP;

var
  Reply: TStream;
begin
  Reply := TMemoryStream.Create;
  try
    IdHTTP1.Get('http://test.com/postaccepter?=msg1=3444&msg2=test', Reply);
    Reply.Position := 0;
    ...
  finally
    Reply.Free;
  end;
end;

视您的需要而定。

答案 1 :(得分:3)

您可以使用Synapse,这是一个非常轻量级的库,只需要一个简单的函数调用即可获得您的要求:

uses
  classes, httpsend;

var
  Response : TStringlist;

begin
  if HttpGetText(URL,Response) then
    DoSomethingWithResponse(Response.Text);
end;

我建议从SVN获取最新版本,这是最新版本并包含对最新版本Delphi的支持。还有用于发布表单数据或检索二进制资源的简单函数。这些是作为简单的函数实现的,如果你想做额外的事情,或者不直接支持,它们是一个很好的模板。

答案 2 :(得分:1)

您可以使用我们的SynCrtSock设备,它比Synapse更轻。

请参阅http://synopse.info/fossil/finfo?name=SynCrtSock.pas

它是一个独立的单元(只有一个与WinSock单元的依赖),它适用于Delphi 6到Delphi XE。

您可以使用这两个函数将数据放在一行代码中:

/// retrieve the content of a web page, using the HTTP/1.1 protocol and GET method
function HttpGet(const server, port: AnsiString; const url: TSockData): TSockData;

/// send some data to a remote web server, using the HTTP/1.1 protocol and POST method
function HttpPost(const server, port: AnsiString; const url, Data, DataType: TSockData): boolean;

或者您可以使用基于文本文件的命令(如readln或writeln)来接收或保存数据。

TSockData只是RawByteString(在Delphi 2009/2010 / XE下)或AnsiString(直到Delphi 2007)的包装。

如果您还需要编写服务器,那么您可以专门使用类,从而实现快速处理和低资源完善(它使用线程池,并通过I / O完成端口实现)。

答案 3 :(得分:0)

如果我已经在应用程序(和MSXML2_TLB)中使用XML,我通常使用IXmlHttpRequest来执行http操作。如果打开并发送请求,您可以使用ResponseXML将响应数据用作XML DOM,使用ResponseText作为文本使用,或者使用ResponseStream作为数据流,请参阅此处以获取如何在Delphi中使用它的示例:{{3 }}