我试图获得通过HTTP GET方法将字符串JSON响应,但我得到的是:HTTP GET JSON字符串成
我使用像这样的代码:
memo1.Text:= idhttp1.Get('http://blabla.com/bla.php');
它返回json数据。我需要得到那个JSON响应memo1。
我该怎么做?
我试图获得通过HTTP GET方法将字符串JSON响应,但我得到的是:HTTP GET JSON字符串成
我使用像这样的代码:
memo1.Text:= idhttp1.Get('http://blabla.com/bla.php');
它返回json数据。我需要得到那个JSON响应memo1。
我该怎么做?
我找到了解决方法。该代码完美无缺。
function GetURLAsString(aURL: string): string;
var
lHTTP: TIdHTTP;
lStream: TStringStream;
begin
lHTTP := TIdHTTP.Create(nil);
lStream := TStringStream.Create(Result);
try
lHTTP.Get(aURL, lStream);
lStream.Position := 0;
Result := lStream.ReadString(lStream.Size);
finally
FreeAndNil(lHTTP);
FreeAndNil(lStream);
end;
end;
有一种方法可以抑制对话框错误并将错误作为文本获取?你尝试'GetURLAsString('http://google.com')'一个弹出的对话框'301永久移动 – 2013-04-25 02:28:05
试印的新版本,印还支持非Unicode德尔福。
印地TIdHTTP获取应automatially转换UTF-8为ANSI(有限制):
内部,TIdHTTP.Get()解码服务器的UTF-8的数据为Unicode, 然后转换,为Ansi将它作为AnsiString在 之前的版本中返回。这AnsiString类型使用操作系统的默认ANSI代码页 ,所以是的,如果没有操作系统的当前 语言不支持Unicode字符正在使用 服务器是数据丢失的可能性。 http://forums2.atozed.com/viewtopic.php?f=7&t=3011
检查您收到的文本编码(应该是在某处的标题),当你正在使用非Unicode德尔福适当的翻译/转换,即UTF-8适用于ANSI。搜索这些条款应该提供大量的例子。 – 2013-03-27 07:13:29
@MarjanVenema:返回字符串的'TIdHTTP.Get()'的重载版本已经完成了。 – 2013-03-27 17:56:21
@RemyLebeau:很酷。很高兴知道。 – 2013-03-28 06:58:24