Last modified: 2024-09-14
Request Method
Initiates an Oracle request.
Namespace: Neo.SmartContract.Framework.Native
Assembly: Neo.SmartContract.Framework
Syntax
public static extern void Request(string url, string filter, string callback, object userData, long gasForResponse);
Parameters:
-
url: The request Url
-
filter: Filter, used to filter useless data
-
callback: Callback function
-
userData: Additional data provided by the user
-
long: The cost of getting a response
Example
namespace demo
{
[DisplayName("Oracle Demo")]
[ContractAuthor("core-dev", "dev@neo.org")]
[ContractEmail("dev@neo.org")]
[ContractDescription("This is a Oracle contract example")]
public class OracleDemo: SmartContract
{
static readonly string PreResponseData = "ResponseData";
/// <summary>
/// Create a request.
/// </summary>
/// <param name="url">URL,e.g."http://127.0.0.1:8080/test"</param>
/// <param name="filter">Filter,e.g."$.value"; JSONPath, { "value": "hello world" }</param>
/// <param name="callback">Callback method,e.g."callback"</param>
/// <param name="userData">User data,e.g.new byte[0]</param>
/// <param name="gasForResponse">Gas for response,e.g.10000000</param>
public static void Request(string url,string filter,string callback,byte[] userData,long gasForResponse) {
Oracle.Request(url, filter, callback, userData, gasForResponse);
}
/// <summary>
/// Callback method
/// </summary>
/// <param name="url">Url</param>
/// <param name="userData">User data</param>
/// <param name="code">Response status</param>
/// <param name="result">Result data</param>
public static void Callback(string url, byte[] userData, int code, byte[] result) {
Storage.Put(Storage.CurrentContext, PreResponseData, result.ToByteString());
}
public static string GetData()
{
return Storage.Get(Storage.CurrentContext, PreResponseData);
}
}
}