测试天气查询API(JAVA版百度api、C#版APIX)未处理json

本文记录测试网络上免费的天气api,只测试两个。

百度一下有很多,可以自己去找别的。

例如我做测试的APIX与APIStore。还有易源接口,聚合等等。。。。

首先给出百度API的地址http://apistore.baidu.com/apiworks/servicedetail/112.html

测试根据城市名称查询天气的,另外还有历史7天与未来3天,根据城市拼音或者城市id等其它接口不做测试

package com.lhh.Weather;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;


public class BaiduWeather {
	/*
	 * 根据城市名称查询天气
	 * @param city
	 * 
	 * auther 老辉辉
	 */
	
	//百度天气api上给的可用,免费apikey	d2ae44152f93b617584f9a6e8740c94e
	private static String mykey = "d2ae44152f93b617584f9a6e8740c94e";
	private static String httpUrl = "http://apis.baidu.com/apistore/weatherservice/cityname";
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String city = "福州";	
		String httpArg = "cityname="+city+"";
		String jsonResult = request(httpUrl, httpArg);
		System.out.println(jsonResult);
		
	}
	//向服务器发送请求,并传递参数
	public static String request(String httpUrl, String httpArg) {
	    BufferedReader reader = null;
	    String result = null;
	    StringBuffer sbf = new StringBuffer();
	    httpUrl = httpUrl + "?" + httpArg;

	    try {
	        URL url = new URL(httpUrl);
	        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
	        connection.setRequestMethod("GET");
	        connection.setRequestProperty("apikey",  mykey);
	        connection.connect();
	        InputStream is = connection.getInputStream();
	        reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
	        String strRead = null;
	        while ((strRead = reader.readLine()) != null) {
	            sbf.append(strRead);
	            sbf.append("
");
	        }
	        reader.close();
	        result = sbf.toString();
	    } catch (Exception e) {
	        e.printStackTrace();
	    }
	    return result;
	}
}


以下是C#语言写的(窗体应用程序)

1.核心文件Form1.cs

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Web;
using System.IO;


namespace 天气查询
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //我看他的代码自己理解后写了一个。得到的是Json格式的数据,未拆分。
            //http://a.apix.cn/apixlife/weather/weather?cityname=福州
            System.Net.WebRequest req = System.Net.WebRequest.Create("http://a.apix.cn/apixlife/weather/weather?cityid=101230101");
            req.Method = "GET";                                                
            req.ContentType = "application/json";
            //1fa54fddcb5d4f777a76949f2596574e ,这个是我注册后给的ID
            req.Headers.Add("apix-key", "d0e89b0e52f64f38435dcb673ba23d7e");
          
            //req.Headers.Add("accept", "application/json");
            System.Net.WebResponse  resp= req.GetResponse();
            System.IO.Stream stream  = resp.GetResponseStream();
            StreamReader sr = new StreamReader(stream);
            textBox1.Text = sr.ReadToEnd();
            sr.Close();
       

            //下面是帮助文档的示例代码,但我手头没有Rest的工具包,所以没有用以下的代码。
            //var client = new RestClient("http://a.apix.cn/apixlife/weather/weather?cityid=your_value");
            //var request = new RestRequest(Method.GET);
            //request.AddHeader("apix-key", "1fa54fddcb5d4f777a76949f2596574e");
            //request.AddHeader("content-type", "application/json");
            //request.AddHeader("accept", "application/json");
            //IRestResponse response = client.Execute(request);
        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {

        }
    }
}

2.program.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;

namespace 天气查询
{
    static class Program
    {
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
    }
}

3.Form1.Designer.cs(可视化界面自动生成的代码)

namespace 天气查询
{
    partial class Form1
    {
        /// <summary>
        /// 必需的设计器变量。
        /// </summary>
        private System.ComponentModel.IContainer components = null;

        /// <summary>
        /// 清理所有正在使用的资源。
        /// </summary>
        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }

        #region Windows 窗体设计器生成的代码

        /// <summary>
        /// 设计器支持所需的方法 - 不要
        /// 使用代码编辑器修改此方法的内容。
        /// </summary>
        private void InitializeComponent()
        {
            this.button1 = new System.Windows.Forms.Button();
            this.textBox1 = new System.Windows.Forms.TextBox();
            this.SuspendLayout();
            // 
            // button1
            // 
            this.button1.Location = new System.Drawing.Point(63, 23);
            this.button1.Name = "button1";
            this.button1.Size = new System.Drawing.Size(143, 23);
            this.button1.TabIndex = 0;
            this.button1.Text = "获取福州天气";
            this.button1.UseVisualStyleBackColor = true;
            this.button1.Click += new System.EventHandler(this.button1_Click);
            // 
            // textBox1
            // 
            this.textBox1.Location = new System.Drawing.Point(63, 52);
            this.textBox1.Multiline = true;
            this.textBox1.Name = "textBox1";
            this.textBox1.ScrollBars = System.Windows.Forms.ScrollBars.Both;
            this.textBox1.Size = new System.Drawing.Size(472, 226);
            this.textBox1.TabIndex = 1;
            this.textBox1.TextChanged += new System.EventHandler(this.textBox1_TextChanged);
            // 
            // Form1
            // 
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.ClientSize = new System.Drawing.Size(632, 351);
            this.Controls.Add(this.textBox1);
            this.Controls.Add(this.button1);
            this.Name = "Form1";
            this.Text = "Form1";
            this.ResumeLayout(false);
            this.PerformLayout();

        }
        #endregion

        private System.Windows.Forms.Button button1;
        private System.Windows.Forms.TextBox textBox1;
    }
}





原文地址:https://www.cnblogs.com/laohuihui/p/5308767.html