Contract-Design

如何使用 Oraclize 根據來自 url 的使用者輸入獲取特定數據?

  • February 7, 2017

我正在使用“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");

它將根據需要返回結果。

引用自:https://ethereum.stackexchange.com/questions/11931