Unity天气API请求(高德)

1.创建高德账户:首页 | 高德控制台

2.创建Key:我的应用 | 高德控制台

3.获取API:天气查询 - 高德地图 API

var client = new RestClient("https://restapi.amap.com/v3/weather/weatherInfo?Key=");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);

4.获取目标城市编码表:相关下载-Web服务 API | 高德地图API

4.改为unity中的请求方式:

  void Start()
    {
        StartCoroutine(RequestForWeather());
    }

[Serializable]
    public class WeatherResponse
    {
        public string status;
        public string count;
        public string info;
        public string infocode;
        public Live[] lives;
    }

    [Serializable]
    public class Live
    {
        public string province;
        public string city;
        public string adcode;
        public string weather;
        public string temperature;
        public string winddirection;
        public string windpower;
        public string humidity;
        public string reporttime;
        public string temperature_float;
        public string humidity_float;
    } 

IEnumerator RequestForWeather()
    {
        string key = "123456";//自己的Key
        string city = "320320"; // 可根据需要赋值
        string extensions = "base"; // 可根据需要赋值
        string output = "JSON"; // 可根据需要赋值
        string url = $"https://restapi.amap.com/v3/weather/weatherInfo?Key={key}&city={city}&extensions={extensions}&output={output}";
        using (UnityEngine.Networking.UnityWebRequest request = UnityEngine.Networking.UnityWebRequest.Get(url))
        {
            yield return request.SendWebRequest();

#if UNITY_2020_1_OR_NEWER
            if (request.result == UnityEngine.Networking.UnityWebRequest.Result.ConnectionError || request.result == UnityEngine.Networking.UnityWebRequest.Result.ProtocolError)
#else
            if (request.isNetworkError || request.isHttpError)
#endif
            {
                Debug.LogError(request.error);
            }
            else
            {
                Debug.Log(request.downloadHandler.text);
                try
                {
                    WeatherResponse weatherResponse = JsonUtility.FromJson(request.downloadHandler.text);
                    if (weatherResponse != null && weatherResponse.lives != null && weatherResponse.lives.Length > 0)
                    {
                        //根据自己的需求解析
                        string date = DateTime.Now.ToString("yyyy-MM-dd");
                        string time = DateTime.Now.ToString("HH:mm");
                        weatherText.text = $"{live.weather}   {date}  {time}";
                    }
                    else
                    {
                        weatherText.text = "未获取到天气信息";
                    }
                }
                catch (Exception ex)
                {
                    weatherText.text = "解析天气信息失败: " + ex.Message;
                }
            }
        }
    }

结果:

Unity天气API请求(高德)_第1张图片

你可能感兴趣的:(Unity天气API请求(高德))