百度API 天气 Delphi


procedure TForm1.Button1Click(Sender: TObject);
begin
  WeatherQuery('上海');
end;

function TForm1.WeatherQuery(const aCity: string): boolean;
var
  url, url1, url2, tmpstr: string;
  stream: TStringStream;
  stream1: TMemoryStream;
  stream2: TMemoryStream;

  i: integer;
  nodeList: IXMLNodeList;
  node: IXMLNode;
  num: integer;
begin
  fBaiduKey := '74c27c8c6c623cfbe0bc80aa0940038f';
  url := IdHTTP1.url.URLEncode
    ('http://api.map.baidu.com/telematics/v3/weather?location=' + aCity +
    '&output=xml&ak=' + fBaiduKey);

  stream := TStringStream.Create('', TEncoding.UTF8);
  IdHTTP1.HTTPOptions := [hoKeepOrigProtocol];
  IdHTTP1.Request.Connection := 'Keep-Alive';

  try
    IdHTTP1.Get(url, stream);
    Result := (stream.Size > 0);
  except
    on e: exception do
    begin
      Result := false;
      fLastError := '[' + e.ClassName + ']-' + e.Message;
    end;
  end;
  IdHTTP1.Disconnect;

  if Result then
  begin
    tmpstr := stream.DataString;
    tmpstr := StringReplace(tmpstr, 'utf-8', 'gb2312', [rfReplaceAll]);
    self.XMLDoc.Active := false;
    self.XMLDoc.Xml.Text := tmpstr;
    self.XMLDoc.Active := true;
    nodeList := XMLDoc.DocumentElement.ChildNodes[3].ChildNodes;
    num := nodeList.Count;
    node := nodeList[1];
    for i := 0 to 23 - 1 do
    begin
      Memo1.Lines.Add(node.ChildNodes.Get(i).Text);
    end;

    url1 := 'http://api.map.baidu.com/images/weather/day/zhenyu.png';
    stream1 := TMemoryStream.Create;
    IdHTTP2.HTTPOptions := [hoKeepOrigProtocol];
    IdHTTP2.Request.Connection := 'Keep-Alive';
    IdHTTP2.Get(url1, stream1);
    Image1.Bitmap.LoadFromStream(stream1);

    url2 := 'http://api.map.baidu.com/images/weather/night/zhenyu.png';
    stream2 := TMemoryStream.Create;
    IdHTTP3.HTTPOptions := [hoKeepOrigProtocol];
    IdHTTP3.Request.Connection := 'Keep-Alive';
    IdHTTP3.Get(url2, stream2);
    Image2.Bitmap.LoadFromStream(stream2);

  end;
  FreeAndNil(stream);
  FreeAndNil(stream1);
  FreeAndNil(stream2);
end;

end.
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值