Contract-Design
如何使用 Oraclize 根據來自 url 的使用者輸入獲取特定數據?
我正在使用“testrpc”和“truffle”進行開發。
以下是使用的合約程式碼。
pragma solidity ^0.4.0; import "./usingOraclize.sol"; contract WeatherApiCall is usingOraclize { function WeatherApiCall() { OAR = OraclizeAddrResolverI(0x5049063e4a7704ac155e4f1f42a4954bbef5bbde); } function __callback(bytes32 myid, string result) { if (msg.sender != oraclize_cbAddress()) throw; } function update() payable { oraclize_query("URL", "json(http://api.openweathermap.org/data/2.5/forecast?q='india'&mode=json&APPID=d2e8279188c8649c17540f798c9cc972).list.0.weather.0.main"); } }
url的json結構如下:-
{ "city": { "id": 1273840, "country": "IN" }, "list": [ { "dt": 1486360800, "weather": [ { "id": 500, "main": "Rain", "description": "light rain" } ], "dt_txt": "2017-02-06 06:00:00" }, { "dt": 1486371600, "weather": [ { "id": 801, "main": "Clouds", "description": "few clouds" } ], "dt_txt": "2017-02-06 09:00:00" } ] }
給定的 url “json( http://api.openweathermap.org/data/2.5/forecast?q= ‘india’&mode=json&APPID=d2e8279188c8649c17540f798c9cc972).list.0.weather.0.main” 返回結果為 “Rain ”。
我必鬚根據使用者指定的日期輸入檢索結果為“雨”或“雲”?我們如何根據使用者輸入獲取天氣狀況?
Solidity 中的 Oraclizequery 將更新如下:-
oraclize_query("URL", "json(http://api.openweathermap.org/data/2.5/forecast?q='india'&mode=json&APPID=d2e8279188c8649c17540f798c9cc972).list[?(@.dt_txt='2017-02-08 12:00:00')].weather[0].main");
它將根據需要返回結果。