admin管理员组

文章数量:1531689

2024年4月24日发(作者:)

Delphi编写天气预报查询小程序

(IXMLHttpRequest版)

其实那些内置天气预报功能的软件的天气预报功能也都是来源于网上!因为也没

有哪个软件公司会自己去架一个气象站了哈哈,现在我就来说说如何通过互联网

上的 信息来获取天气情况!

目前能查询天气的网站有不少,比较有名的有中国天气网与Google天气,大

部分站点与大部分软件的天气预报数据也都是来源于中国天气网!因为中国天气

网 是中国气象局相关的,所以他的数据会更准确一些!查阅本文信息时,假设

读者熟悉http协议与如何模拟网页提交等知识!

中国天气网有一个连接/data/+ ‘城市编码.html',

这个连接可以获取对应的城市的天气情况!返回Json数据,解析Json就能获得

该城市的天气!这个问题就在那个城市编码的获取 方式上,这个获取方式,网

上有代码的!我就不写了,我是直接将城市编码都包到资源文件中去了使用的时

候,直接从资源加载就行了!获得天气的Json数据, 用的事Http协议,这里

只要用可以提交http的数据的控件或者类都可以(比如,indy的idhttp,ics

的http控件都行,也可以使用 MSxml的IXMLHttpRequest,也可以使用

HttpRequest5.1或者使用WinHttp控件),这里我用的事最简单的方式,就用

了 Delphi直接带的indy的idhttp来获得

unit Unit4;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,

Forms,

Dialogs, StdCtrls,msxml,uLkJSON, ExtCtrls, IdBaseComponent,

IdComponent,

IdTCPConnection, IdTCPClient, IdHTTP;

type

TComboBox = class(Box)

private

Values: TStringList;

public

constructor Create(AOwner: TComponent);override;

destructor Destroy;override;

procedure LoadFromFile(Filename: string);

procedure LoadFromRes(ResName: string);

end;

TForm4 = class(TForm)

Memo1: TMemo;

Panel1: TPanel;

ComboBox1: TComboBox;

Button1: TButton;

IdHTTP1: TIdHTTP;

procedure FormCreate(Sender: TObject);

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

function pro_result(str:string):string ;

public

{ Public declarations }

List: TStringList;

HttpReq: IXMLHttpRequest;

end;

var

Form4: TForm4;

implementation

uses DateUtils;

{$R *.dfm}

{$R }

procedure 1Click(Sender: TObject);

var

url: string;

Json: TlkJSONobject;

ChildJson,tmpJson: TlkJSONbase;

begin

url :=

'/data/'+romIndex[Combo

dex]+'.html';

('Get', Url, False, EmptyParam, EmptyParam);

(EmptyParam);//开 始搜索

Url := seText;

Json := ext(url) as TlkJSONobject;

ChildJson := ['weatherinfo'];

;

if pe = jsObject then

begin

本文标签: 天气天气预报城市获取数据