最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java基于百度天氣API實現(xiàn)天氣實時獲取

 更新時間:2026年03月23日 09:27:18   作者:夜郎king  
這篇文章主要為大家詳細介紹了Java如何基于百度天氣API實現(xiàn)天氣實時獲取功能,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學(xué)習一下

一、前言

1.1 業(yè)務(wù)背景

隨著互聯(lián)網(wǎng)全球化、跨境業(yè)務(wù)常態(tài)化以及GIS地理信息系統(tǒng)的廣泛普及,海外城市實時氣象數(shù)據(jù)早已不再是單純的民生查詢需求,而是成為眾多后端業(yè)務(wù)系統(tǒng)、物聯(lián)網(wǎng)平臺、跨境服務(wù)應(yīng)用的核心基礎(chǔ)數(shù)據(jù)支撐,應(yīng)用場景覆蓋各行各業(yè),剛需屬性極強。在跨境文旅與出行服務(wù)領(lǐng)域,海外出行APP、國際機票酒店預(yù)訂平臺,需要實時展示目的地城市的天氣狀況,幫助用戶規(guī)劃行程、規(guī)避惡劣天氣,提升用戶體驗與平臺實用性;在國際物流與跨境電商場景中,物流調(diào)度系統(tǒng)、海外倉儲管理平臺,需要依托海外天氣數(shù)據(jù)預(yù)判運輸延誤、調(diào)整配送方案,保障跨境貨物運輸效率;在GIS地理信息與物聯(lián)網(wǎng)行業(yè),海外站點監(jiān)控、跨境水利監(jiān)測、全球點位氣象圖層疊加等業(yè)務(wù),更是離不開精準的經(jīng)緯度對應(yīng)天氣數(shù)據(jù),支撐系統(tǒng)實現(xiàn)時空數(shù)據(jù)與氣象數(shù)據(jù)的聯(lián)動分析。

除此之外,海外留學(xué)服務(wù)平臺、跨國企業(yè)辦公系統(tǒng)、戶外跨境作業(yè)設(shè)備監(jiān)控等場景,也都對穩(wěn)定、免費、易接入的海外天氣接口有強烈需求。對于Java后端開發(fā)者而言,快速搭建一套輕量、穩(wěn)定的海外天氣獲取服務(wù),既能滿足業(yè)務(wù)剛需,也能完善系統(tǒng)的基礎(chǔ)數(shù)據(jù)能力,是極具實用價值的技術(shù)落地場景。

1.2 現(xiàn)有服務(wù)的痛點

盡管國內(nèi)天氣接口資源豐富,但放眼海外氣象數(shù)據(jù)獲取領(lǐng)域,市面上的服務(wù)普遍存在諸多短板,導(dǎo)致開發(fā)者在實際開發(fā)中屢屢受阻,具體痛點主要集中在以下幾點:

  • 服務(wù)覆蓋范圍受限:絕大多數(shù)免費國內(nèi)天氣接口,僅支持國內(nèi)城市數(shù)據(jù)查詢,完全不覆蓋海外地區(qū),無法滿足跨境業(yè)務(wù)的基礎(chǔ)需求;少數(shù)支持海外的接口,也僅覆蓋部分主流城市,小眾海外城市、偏遠地區(qū)數(shù)據(jù)缺失嚴重。
  • 成本與門檻過高:專業(yè)海外氣象商業(yè)接口,要么收費高昂、按調(diào)用次數(shù)計費,中小企業(yè)和個人開發(fā)者難以承擔;要么需要企業(yè)資質(zhì)認證、簽約審核,個人項目根本無法接入,開發(fā)成本和準入門檻雙高。
  • 接口集成難度大:部分海外開源氣象接口,協(xié)議復(fù)雜、鑒權(quán)繁瑣,部分接口還存在地域訪問限制、國內(nèi)調(diào)用延遲高、數(shù)據(jù)格式不規(guī)范等問題,Java后端集成需要額外處理網(wǎng)絡(luò)、編碼、異常等諸多問題,開發(fā)效率極低。
  • 適配場景單一:現(xiàn)有接口大多僅支持城市名稱查詢,不支持GIS場景常用的經(jīng)緯度檢索,無法適配地理信息系統(tǒng)、全球點位監(jiān)控等專業(yè)化需求,實用性大打折扣。

針對以上痛點,本文選擇百度地圖開放平臺海外天氣API作為數(shù)據(jù)來源,結(jié)合Java原生開發(fā),打造一套零額外依賴、輕量易集成、支持雙模式查詢的海外天氣獲取工具,免費額度充足,接入流程簡單,解決個人開發(fā)者與中小企業(yè)的海外天氣數(shù)據(jù)獲取難題。

二、百度海外天氣API

2.1 API信息與請求參數(shù)

百度海外天氣API屬于百度地圖開放平臺,采用HTTPS協(xié)議,支持GET請求方式,接口穩(wěn)定、響應(yīng)速度快,訪問無延遲,核心支持海外城市行政區(qū)編碼經(jīng)緯度坐標兩種查詢方式,適配不同業(yè)務(wù)場景。關(guān)于百度天氣服務(wù)在之前的內(nèi)容中也曾經(jīng)重點詳細的講解過。

參數(shù)名數(shù)據(jù)類型必選默認值描述信息
district_idstring海外城市行政區(qū)劃編碼海外城市行政區(qū)劃編碼為自定義,只支持海外天氣查詢服務(wù)使用,和location二選一
locationdouble經(jīng)緯度,經(jīng)度在前緯度在后,逗號分隔。支持類型:bd09mc/bd09ll/wgs84/gcj02。
akstring開發(fā)者密鑰,可在API控制臺申請獲得
data_typestring請求數(shù)據(jù)類型。數(shù)據(jù)類型有:now/fc/index/alert/fc_hour/all,控制返回內(nèi)容
outputstringjson返回格式,目前支持json/xml
languagestringcn語言類型。語言類型有: cn/en,分別表示中文和英文, 默認中文。目前僅支持行政區(qū)劃顯示英文。
coordtypestringwgs84支持類型:wgs84/bd09ll/bd09mc/gcj02

注意:如果district_id和location同時傳,默認以district_id為準;

2.2 返回參數(shù)解析

接口請求成功后返回標準JSON格式數(shù)據(jù),核心返回字段清晰易懂,無需復(fù)雜解析,關(guān)鍵參數(shù)分為三大模塊:

  • 狀態(tài)標識:status字段,0表示請求成功,非0為對應(yīng)錯誤碼,方便快速判斷接口調(diào)用結(jié)果;
  • 位置信息:result.location下包含城市名稱、國家、經(jīng)緯度、行政區(qū)劃編碼等基礎(chǔ)地理信息,確認查詢目標準確性;
  • 實時天氣數(shù)據(jù):result.now為核心業(yè)務(wù)數(shù)據(jù),包含實時溫度、體感溫度、濕度、風向、風力、天氣現(xiàn)象(晴、雨、雪等)、氣壓等完整氣象數(shù)據(jù);
  • 更新時間:result.update_time標記氣象數(shù)據(jù)的最新更新時間,確保數(shù)據(jù)時效性。

關(guān)于天氣的返回參數(shù),見:GSON 框架下百度天氣 JSON 數(shù)據(jù)轉(zhuǎn) JavaBean 的實戰(zhàn)攻略。

三、Java實戰(zhàn)

3.1 前置準備工作

注冊百度地圖開放平臺賬號,進入控制臺創(chuàng)建應(yīng)用,選擇服務(wù)端應(yīng)用類型,獲取AK密鑰;

確認應(yīng)用開通天氣接口權(quán)限(免費默認開通);

搭建基礎(chǔ)Java項目,引入UniHttp依賴,SpringBoot項目也可直接復(fù)用。

3.2 UniHttp接口定義

為了簡化HTTP請求流程,避免引入HttpClient、OkHttp等第三方依賴,本文使用UniHttp工具類,實現(xiàn)GET請求功能,代碼簡潔、無冗余,適配所有Java項目,兼容性極強。核心代碼如下:

package com.yelang.project.thridinterface;
import com.burukeyou.uniapi.http.annotation.HttpApi;
import com.burukeyou.uniapi.http.annotation.param.QueryPar;
import com.burukeyou.uniapi.http.annotation.request.GetHttpInterface;
import com.burukeyou.uniapi.http.core.response.HttpResponse;
/**
 * -百度海外天氣服務(wù)
 * @author 夜郎king
 */
@HttpApi(url = "https://api.map.baidu.com/weather_abroad/v1")
public interface BaiduWeatherAbroadService {
	/**
	 * -通過行政區(qū)劃代碼查詢實時天氣信息及未來7天天氣預(yù)報。(注意:如果district_id和location同時傳,默認以district_id為準;)
	 * @param district_id 海外城市行政區(qū)劃編碼海外城市行政區(qū)劃編碼為自定義,只支持海外天氣查詢服務(wù)使用),和location二選一
	 * @param location 經(jīng)緯度,經(jīng)度在前緯度在后,逗號分隔。支持類型:bd09mc/bd09ll/wgs84/gcj02。這里官網(wǎng)定義的數(shù)據(jù)類型為Double,應(yīng)該是標注有誤
	 * @param ak 開發(fā)者密鑰
	 * @param data_type 請求數(shù)據(jù)類型。類型有:now/fc/index/alert/fc_hour/all,控制返回內(nèi)容
	 * @param output 返回格式,目前支持json/xml
	 * @param language 語言類型。語言類型有: cn/en,分別表示中文和英文, 默認中文。
	 * @param coordtype 支持類型:wgs84/bd09ll/bd09mc/gcj02
	 * @return
	 */
	@GetHttpInterface("/")
	public HttpResponse<String> query(@QueryPar("district_id") String district_id,
			@QueryPar("location") String location, @QueryPar("ak") String ak, @QueryPar("data_type") String data_type,
			@QueryPar("output") String output, @QueryPar("language") String language,
			@QueryPar("coordtype") String coordtype);

}

3.3 實際調(diào)用

封裝專屬天氣查詢工具類,整合兩種查詢方式,將AK和接口地址抽離為演示示例,便于后期維護,代碼結(jié)構(gòu)清晰,直接調(diào)用對應(yīng)方法即可獲取海外天氣數(shù)據(jù),新手也能快速上手。這里使用Junit的測試集成方式進行演示。核心代碼如下:

package com.yelang.project.unihttp;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import com.burukeyou.uniapi.http.core.response.HttpResponse;
import com.google.gson.Gson;
import com.yelang.project.meteorology.domain.BdWeatherDTO;
import com.yelang.project.meteorology.domain.WeatherInfoDTO;
import com.yelang.project.thridinterface.BaiduWeatherAbroadService;
/**
 * - 百度海外天氣測試類
 * @author 夜郎king
 *
 */
@SpringBootTest
@RunWith(SpringRunner.class)
public class BaiduWeatherAbroadServiceCase {
	private static final String BAIDU_DEFAULT_AK = "yourak";
	private static final String DATA_TYPE  = "all";
	private static final String OUTPUT  = "json";
	private static final String LANGUAGE  = "cn";
	private static final String COORDTYPE  = "wgs84";
	@Autowired
	private BaiduWeatherAbroadService bdWeatherAbroadService;
	
	/**
	 * - 根據(jù)行政區(qū)代號查詢外國天氣
	 */
	@Test
	public void queryBydistrictId() {
		String district_id = "IRN10001001001";//表示具體的國家行政代號,見百度的海外城市信息,這里代表德黑蘭
		HttpResponse<String> result  = bdWeatherAbroadService.query(district_id,null, BAIDU_DEFAULT_AK, DATA_TYPE, OUTPUT, LANGUAGE, COORDTYPE);
		System.out.println(result.getBodyResult());
		Gson gson = new Gson();
		BdWeatherDTO bdWeatherInfo = gson.fromJson(result.getBodyResult(), BdWeatherDTO.class);
		WeatherInfoDTO bdResult = bdWeatherInfo.getResult();
		System.out.println(bdResult.getWeatherNow());
		System.out.println(bdResult.getAlerts());
		System.out.println(bdResult.getIndexes());
		System.out.println(bdResult.getForecasts());
		System.out.println(bdResult.getForecastHours());
	}
	/**
	 * - 根據(jù)經(jīng)緯度查外國天氣
	 */
	@Test
	public void queryLocation() {
		String location = "35.03705894,31.73021175";//表示具體的國家行政代號,見百度的海外城市信息,這里代表以色列
		HttpResponse<String> result  = bdWeatherAbroadService.query(null,location, BAIDU_DEFAULT_AK, DATA_TYPE, OUTPUT, LANGUAGE, COORDTYPE);
		System.out.println(result.getBodyResult());
		Gson gson = new Gson();
		BdWeatherDTO bdWeatherInfo = gson.fromJson(result.getBodyResult(), BdWeatherDTO.class);
		WeatherInfoDTO bdResult = bdWeatherInfo.getResult();
		System.out.println(bdResult.getWeatherNow());
		System.out.println(bdResult.getAlerts());
		System.out.println(bdResult.getIndexes());
		System.out.println(bdResult.getForecasts());
		System.out.println(bdResult.getForecastHours());
	} 
}

四、成果展示

4.1 按編碼檢索

該查詢方式適合固定海外城市、業(yè)務(wù)系統(tǒng)配置化查詢場景,只需提前獲取目標海外城市的district_id,傳入方法即可快速獲取精準天氣數(shù)據(jù),數(shù)據(jù)穩(wěn)定無延遲。海外城市的行政區(qū)劃id百度提供了完整的列表,大家下載到本地即可,這里以伊朗首都德黑蘭為例,在Excel表格中查找到具體的區(qū)劃編碼,如下:

測試效果:傳入對應(yīng)行政區(qū)編碼:IRN10001001001,控制臺成功返回城市名稱、實時氣溫、濕度、風向、天氣狀況、數(shù)據(jù)更新時間等完整信息,數(shù)據(jù)精準匹配當?shù)貙崟r氣象,無亂碼、無數(shù)據(jù)缺失,適配后臺定時同步、固定城市天氣展示等業(yè)務(wù)。

4.2 按經(jīng)緯度檢索

海外天氣服務(wù)除了支持按照行政區(qū)劃來查詢外,還支持按照經(jīng)緯度來進行查詢。該模式是GIS地理信息系統(tǒng)、全球點位監(jiān)控場景的核心適配方式,無需提前知曉城市名稱,只需傳入目標點位的經(jīng)緯度坐標,接口會自動匹配所屬海外城市,返回對應(yīng)實時天氣數(shù)據(jù)。這里以耶路撒冷為例:

測試效果:傳入耶路撒冷經(jīng)緯度坐標(35.03705894,31.73021175),接口快速定位對應(yīng)城市,返回完整氣象數(shù)據(jù),完美適配地圖點位氣象疊加、跨境設(shè)備監(jiān)控、戶外作業(yè)預(yù)警等專業(yè)化需求,解決了傳統(tǒng)接口不支持GIS坐標查詢的痛點,實用性拉滿。

五、總結(jié)

以上就是本文的主要內(nèi)容。本篇實戰(zhàn)文章圍繞Java后端開發(fā)者的實際業(yè)務(wù)痛點,完整落地了基于百度天氣API的海外城市實時天氣獲取功能,從業(yè)務(wù)背景分析、接口講解、代碼封裝到成果驗證,全程覆蓋開發(fā)全流程,代碼可直接復(fù)制運行。

5.1 核心技術(shù)亮點總結(jié)

  • 零依賴輕量實現(xiàn):全程采用JDK原生代碼開發(fā),未引入任何第三方框架和依賴包,無論是普通Java項目、SpringBoot/SpringMvc項目,還是老舊Java后端系統(tǒng),都能無縫接入、直接復(fù)用,兼容性拉滿,不會對原有項目造成任何侵入。
  • 雙查詢模式全覆蓋:同時支持海外城市行政區(qū)編碼和經(jīng)緯度坐標查詢,兼顧普通業(yè)務(wù)系統(tǒng)和GIS地理信息專業(yè)場景,解決了市面上大部分接口場景單一的短板,適用范圍極廣。
  • 低成本高穩(wěn)定性:依托百度地圖開放平臺免費接口,個人開發(fā)者和中小企業(yè)均可免費使用,免費調(diào)用額度完全滿足日常開發(fā)和小規(guī)模業(yè)務(wù)需求,規(guī)避商業(yè)接口高額成本;接口國內(nèi)訪問穩(wěn)定、延遲低,數(shù)據(jù)實時性強,無地域訪問限制。

5.2 開發(fā)注意事項

  • 百度AK密鑰需妥善保管,建議在項目中通過配置文件注入,不要硬編碼到工具類中;
  • 海外城市行政區(qū)編碼需通過百度地圖開放平臺官方渠道查詢,確保編碼準確,避免查詢失敗;
  • 經(jīng)緯度坐標格式需嚴格遵循“英文逗號分隔、無空格”規(guī)范,防止格式錯誤導(dǎo)致接口調(diào)用失敗。

整體而言,這套Java海外天氣獲取方案,完美平衡了開發(fā)成本、接入難度和實用性,精準解決了跨境業(yè)務(wù)、GIS系統(tǒng)中海外氣象數(shù)據(jù)獲取的核心痛點,非常適合Java后端新手學(xué)習實戰(zhàn),也能直接落地到實際項目中,是一款高效實用的后端工具類實現(xiàn)。

以上就是Java基于百度天氣API實現(xiàn)天氣實時獲取的詳細內(nèi)容,更多關(guān)于Java實時獲取天氣的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Java 線程基本概念、使用方法最全詳解

    Java 線程基本概念、使用方法最全詳解

    本文詳細介紹了Java線程的基本概念、使用方法、線程同步和安全、線程間通信、線程狀態(tài)、線程池以及拒絕策略等,通過理論知識和實際示例,幫助讀者全面理解和掌握Java線程編程,感興趣的朋友跟隨小編一起看看吧
    2025-12-12
  • Ribbon和Feign的區(qū)別及說明

    Ribbon和Feign的區(qū)別及說明

    本文介紹了Spring Cloud Netflix中的兩個負載均衡組件:Ribbon和Feign,Ribbon是一個基于HTTP和TCP客戶端的負載均衡工具,使用起來較為繁瑣,而Feign是一個使用接口方式的HTTP客戶端,采用類似MyBatis的@Mapper注解方式,使得編寫客戶端變得非常容易
    2024-11-11
  • Java通過Modbus簡單實現(xiàn)數(shù)采的示例代碼

    Java通過Modbus簡單實現(xiàn)數(shù)采的示例代碼

    本文介紹了Java通過Modbus簡單實現(xiàn)數(shù)采,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧
    2024-11-11
  • 如何在Java中創(chuàng)建線程通信的四種方式你知道嗎

    如何在Java中創(chuàng)建線程通信的四種方式你知道嗎

    開發(fā)中不免會遇到需要所有子線程執(zhí)行完畢通知主線程處理某些邏輯的場景?;蛘呤蔷€程 A 在執(zhí)行到某個條件通知線程 B 執(zhí)行某個操作。下面我們來一起學(xué)習如何解決吧
    2021-09-09
  • java導(dǎo)出csv格式文件的方法

    java導(dǎo)出csv格式文件的方法

    這篇文章主要為大家詳細介紹了java導(dǎo)出csv格式文件的方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • Mybatis-plus插入后返回元素id的問題

    Mybatis-plus插入后返回元素id的問題

    這篇文章主要介紹了Mybatis-plus插入后返回元素id的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • SpringBoot實現(xiàn)事務(wù)鉤子函數(shù)的示例

    SpringBoot實現(xiàn)事務(wù)鉤子函數(shù)的示例

    本文主要介紹了SpringBoot實現(xiàn)事務(wù)鉤子函數(shù)的示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧
    2025-08-08
  • 最新評論

    北安市| 阳谷县| 长宁区| 靖州| 南汇区| 临桂县| 安吉县| 盱眙县| 江北区| 太湖县| 安丘市| 长葛市| 三明市| 台中市| 五河县| 绵阳市| 宁蒗| 虞城县| 利津县| 合水县| 衢州市| 天峨县| 武威市| 宜君县| 彭水| 霍邱县| 西藏| 大荔县| 青铜峡市| 凉城县| 尼木县| 堆龙德庆县| 长兴县| 教育| 华池县| 铁力市| 开鲁县| 丹江口市| 江安县| 宜黄县| 辽阳县|