Blockchain 如何在solidity中使用Oraclize将参数传递给数据源?
我的目标是向数据源传递一些字符串,然后在那里进行处理并返回结果。 下面给出的代码是稳定的Blockchain 如何在solidity中使用Oraclize将参数传递给数据源?,blockchain,ethereum,solidity,oraclize,Blockchain,Ethereum,Solidity,Oraclize,我的目标是向数据源传递一些字符串,然后在那里进行处理并返回结果。 下面给出的代码是稳定的 oraclize_query("URL", "json(https://clever-ape-38.localtunnel.me).a","sfdg"); 但当我试图从区块链中获取一些价值并使用它时,如果失败了 string memory st = arr[msg.sender]; oraclize_query("URL", "json(https://clever-ape-38.localtunnel.
oraclize_query("URL", "json(https://clever-ape-38.localtunnel.me).a","sfdg");
但当我试图从区块链中获取一些价值并使用它时,如果失败了
string memory st = arr[msg.sender];
oraclize_query("URL", "json(https://clever-ape-38.localtunnel.me).a",st);
每样东西都编译得很好。即使是块菌迁移——重置工作正常。
我觉得从区块链抓取需要一些时间,在抓取之前会调用oraclize_query()
下面提到了错误
[2019-05-28T08:54:50.206Z] INFO new HTTP query created, id: 72e3a263387ed365d97bc97a64c601380a5b4e8bbd1b3740bcc2af1e2bc97b19
[2019-05-28T08:54:50.215Z] INFO checking HTTP query 72e3a263387ed365d97bc97a64c601380a5b4e8bbd1b3740bcc2af1e2bc97b19 status in 0 seconds
[2019-05-28T08:54:50.215Z] INFO checking HTTP query 72e3a263387ed365d97bc97a64c601380a5b4e8bbd1b3740bcc2af1e2bc97b19 status every 5 seconds...
[2019-05-28T08:54:56.634Z] INFO 72e3a263387ed365d97bc97a64c601380a5b4e8bbd1b3740bcc2af1e2bc97b19 HTTP query result:
{
"result": {
"_timestamp": 1559033691,
"id": "72e3a263387ed365d97bc97a64c601380a5b4e8bbd1b3740bcc2af1e2bc97b19",
"daterange": [
1559033689,
1559035489
],
"_lock": false,
"id2": "72fdf59adf3ecc92244e3b173ce1657252ab5eb877c3569a393599d34dd2c848",
"actions": [],
"interval": 3600,
"checks": [
{
"errors": [
"TypeError",
"parsing_helper.wrong_path"
],
"success": true,
"timestamp": 1559033691,
"results": [
""
],
"proofs": [
null
],
"match": true
}
],
"version": 3,
"_timestamp_creation": 1559033689,
"context": {
"protocol": "eth",
"relative_timestamp": 1559033687,
"type": "blockchain",
"name": "eth_AB65E563DB"
},
"active": false,
"hidden": false,
"payload": {
"conditions": [
{
"query": [
"json(https://purple-squid-54.localtunnel.me).a",
"28189689"
],
"proof_type": 0,
"check_op": "tautology",
"datasource": "URL",
"value": null
}
]
}
},
"success": true
}
[2019-05-28T08:54:56.637Z] ERROR HTTP query error
[
"TypeError",
"parsing_helper.wrong_path"
]
[2019-05-28T08:54:56.639Z] INFO sending __callback tx...
{
"contract_myid": "0x72fdf59adf3ecc92244e3b173ce1657252ab5eb877c3569a393599d34dd2c848",
"contract_address": "0x481a276d14a6a74e1ec1f74b64c2af226ba7033c"
}
[2019-05-28T08:55:01.853Z] INFO contract 0x481a276d14a6a74e1ec1f74b64c2af226ba7033c __callback tx sent, transaction hash: 0xfada229b6f9860e0717b3a098dd93aaef280852dbf75109c830b555c488e6c81
{
"myid": "0x72fdf59adf3ecc92244e3b173ce1657252ab5eb877c3569a393599d34dd2c848",
"result": "",
"proof": null,
"proof_type": "0x00",
"contract_address": "0x481a276d14a6a74e1ec1f74b64c2af226ba7033c",
"gas_limit": 200000,
"gas_price": null
}
请帮助解决此问题。感谢您添加错误日志 实际答复: 如果您将POST数据作为字符串添加,但该字符串采用有效的JSON格式,则将对其进行解析。为了将其保留为字符串,需要添加换行字符或空格,以便字符串的开头:
“\n您的Oraclize查询按预期工作(我在这里假设您传入的第三个参数是uint
,是调用的气体限制)。由于Oraclize将从API调用返回正确的数据,所以“获取”是什么“失败了吗?@gskapka我已经添加了日志。我试图传递一个字符串。@gskapka我的目标是传递一些字符串到数据源,然后在那里处理并返回结果。我已经更新了主要答案。不,这不是问题所在。返回的Json格式很好。这是指向localtunnel的链接,它没有返回,因为我关闭了笔记本电脑。然而,我的目标是向数据源传递一些字符串,然后在那里处理并返回结果。请提供帮助,您可以发布数据,然后格式化数据并从中返回您需要的任何内容,这将是API的一项工作。oraclize URL数据源只是查询您提供的URL,然后返回URL返回的任何内容。这就是我试图做的,在oraclize_query()中输入“st”,但它无法发布数据,就像我输入一些字符串一样,它是在服务器端接收的。使用测试查询页面,您可以在这里看到一个使用URL数据源的工作post请求:如果您尝试使用类似curl的方法,您的post请求是否工作并返回正确格式的数据?