DELPHI7下用superobject读取中国天气网的JSON数据的天气预报

白波九道 2013-08-24 10:42:57
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, IdBaseComponent, IdComponent, IdTCPConnection,
IdTCPClient, IdHTTP, StdCtrls,msxml;

type
TForm1 = class(TForm)
IdHTTP1: TIdHTTP;
Memo1: TMemo;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
HttpReq: IXMLHttpRequest;
end;



var
Form1: TForm1;

implementation
uses DateUtils,superobject;
{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
url: string;
vJson: ISuperObject;
begin

HttpReq := CoXMLHTTPRequest.Create;

url := 'http://m.weather.com.cn/data/101270401.html';
HttpReq.open('Get', Url, False, EmptyParam, EmptyParam);
HttpReq.send(EmptyParam);//开始搜索
Url := HttpReq.responseText;
vjson:=so(url);

Memo1.Lines.Clear;
if vJson['weatherinfo'].AsString<>'' then
begin
vjson:=so(vJson['weatherinfo'].AsString);
memo1.Lines.Add('城市:'+vJson['city'].AsString );
Memo1.Lines.Add('今日天气('+vJson['date_y'].AsString+' '+vjson['week'].asstring+'):');
Memo1.Lines.Add(' 温度:'+vjson['temp1'].asstring);
Memo1.Lines.Add(' 天气:'+vjson['weather1'].asstring);
Memo1.Lines.Add(' 风力:'+vjson['wind1'].asstring);

Memo1.Lines.Add('明日天气('+FormatDateTime('YYYY年MM月DD日 ',DateUtils.IncDay(now))+'):');
Memo1.Lines.Add(' 温度:'+vjson['temp2'].asstring);
Memo1.Lines.Add(' 天气:'+vjson['weather2'].asstring);
Memo1.Lines.Add(' 风力:'+vjson['wind2'].asstring);

Memo1.Lines.Add(FormatDateTime('YYYY年MM月DD日 ',DateUtils.IncDay(now,2))+':');
Memo1.Lines.Add(' 温度:'+vjson['temp3'].asstring);
Memo1.Lines.Add(' 天气:'+vjson['weather3'].asstring);
Memo1.Lines.Add(' 风力:'+vjson['wind3'].asstring);

Memo1.Lines.Add(FormatDateTime('YYYY年MM月DD日 ',DateUtils.IncDay(now,3))+':');
Memo1.Lines.Add(' 温度:'+vjson['temp4'].asstring);
Memo1.Lines.Add(' 天气:'+vjson['weather4'].asstring);
Memo1.Lines.Add(' 风力:'+vjson['wind4'].asstring);

Memo1.Lines.Add(FormatDateTime('YYYY年MM月DD日 ',DateUtils.IncDay(now,4))+':');
Memo1.Lines.Add(' 温度:'+vjson['temp5'].asstring);
Memo1.Lines.Add(' 天气:'+vjson['weather5'].asstring);
Memo1.Lines.Add(' 风力:'+vjson['wind5'].asstring);
end;

end;


end.
...全文
3435 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
v8818 2016-01-26
  • 打赏
  • 举报
回复
[yabao=][/yabao]
jjpweb 2016-01-26
  • 打赏
  • 举报
回复
技术分享贴?
s11ss 2013-08-24
  • 打赏
  • 举报
回复
用indy取数据吧,HttpReq发送的报文头部加了一个值为0的Content-Length,导致取不到数据。 而这个Content-Length又删不掉,所以还是用indy吧!
lhy 2013-08-24
  • 打赏
  • 举报
回复
这个问题有什么问题?
董董 2013-08-24
  • 打赏
  • 举报
回复
使用TIdHTTP取数据,没问题。

828

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧