首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >web3.js如何执行帖子请求?

web3.js如何执行帖子请求?
EN

Ethereum用户
提问于 2016-07-06 10:39:44
回答 1查看 1.2K关注 0票数 1

在阅读了文档这里这里之后,我尝试从这里运行余额检查器脚本。我修改了源文件的路径,代码类似于(我下载了当前工作目录中的所有javascript依赖项):

代码语言:javascript
复制
<!doctype>
<html>

<head>
<script type="text/javascript" src="./bignumber.js/bignumber.min.js"></script> 
<script type="text/javascript" src="./web3.js/dist/web3.js"></script>
<script type="text/javascript">

    var Web3 = require('web3');
    var web3 = new Web3();
    web3.setProvider(new web3.providers.HttpProvider("http://127.0.0.1:8000"));
    function watchBalance() {
        var coinbase = web3.eth.coinbase;
        var originalBalance = web3.eth.getBalance(coinbase).toNumber();
        document.getElementById('coinbase').innerText = 'coinbase: ' + coinbase;
        document.getElementById('original').innerText = ' original balance: ' + originalBalance + '    watching...';
        web3.eth.filter('latest').watch(function() {
            var currentBalance = web3.eth.getBalance(coinbase).toNumber();
            document.getElementById("current").innerText = 'current: ' + currentBalance;
            document.getElementById("diff").innerText = 'diff:    ' + (currentBalance - originalBalance);
        });
    }
</script>
</head>
<body>
    <h1>coinbase balance</h1>
    <button type="button" onClick="watchBalance();">watch balance</button>
    <div></div>
    <div id="coinbase"></div>
    <div id="original"></div>
    <div id="current"></div>
    <div id="diff"></div>
</body>
</html>

我使用python的SimpleHTTPServer启动了一个http服务器实例:

代码语言:javascript
复制
python -m SimpleHTTPServer

连接到的节点作为引导节点运行:

代码语言:javascript
复制
pyethapp -c eth.network_id=1337 -c jsonrpc.corsdomain='http://localhost:8000' --data-dir BootstrapDir -c node.privkey_hex=091bd6067cb4612df85d9c1ff85cc47f259ced4d4cd99816b14f35650f59c322 -b 'enode://288b97262895b1c7ec61cf314c2e2004407d0a5dc77566877aad1f2a36659c8b698f4b56fd06c4a0c0bf007b4cfb3e7122d907da3b005fa90e724441902eb19e@127.0.0.1:29873' -c eth.genesis=CustomGenesis.json -m 100 run

当我在Chrome中调试脚本时,会发现以下错误:

代码语言:javascript
复制
    httpprovider.js:77 POST http://127.0.0.1:8000/ 501 
(Unsupported method ('POST'))
HttpProvider.send @ 
httpprovider.js:77RequestManager.send @ 
requestmanager.js:58get @ 
property.js:107watchBalance @ 
balance.html:14onclick @ 
balance.html:28

    errors.js:35 Uncaught Error: Invalid JSON RPC response: "
<head>\n<title>Error response</title>\n</head>\n<body>\n<h1>Error response</h1>\n<p>Error code 501.\n<p>Message: Unsupported method ('POST').\n<p>Error code explanation: 501 = Server does not support this operation.\n</body>\n"
InvalidResponse @ 
errors.js:35HttpProvider.send @ 
httpprovider.js:87RequestManager.send @ 
requestmanager.js:58get @ 
property.js:107watchBalance @ 
balance.html:14onclick @ 
balance.html:28

有办法解决这个问题吗?

EN

回答 1

Ethereum用户

发布于 2016-07-06 13:10:51

我发现了这个问题,它与SimpleHTTPServer有关。我现在用阿帕奇。我已经通过编辑port.conf将apache设置为在非默认端口上侦听:

代码语言:javascript
复制
# find / -name *conf | grep apache
/etc/apache2/mods-available/dnssd.conf
/etc/apache2/mods-available/dir.conf
/etc/apache2/mods-available/autoindex.conf
/etc/apache2/mods-available/mpm_worker.conf
/etc/apache2/mods-available/cgid.conf
/etc/apache2/mods-available/mime_magic.conf
/etc/apache2/mods-available/ssl.conf
/etc/apache2/mods-available/fcgid.conf
/etc/apache2/mods-available/alias.conf
/etc/apache2/mods-available/mime.conf
/etc/apache2/mods-available/php5.conf
/etc/apache2/mods-available/dav_fs.conf
/etc/apache2/mods-available/status.conf
/etc/apache2/mods-available/proxy_ftp.conf
/etc/apache2/mods-available/actions.conf
/etc/apache2/mods-available/proxy_balancer.conf
/etc/apache2/mods-available/userdir.conf
/etc/apache2/mods-available/cache_disk.conf
/etc/apache2/mods-available/info.conf
/etc/apache2/mods-available/deflate.conf
/etc/apache2/mods-available/setenvif.conf
/etc/apache2/mods-available/ldap.conf
/etc/apache2/mods-available/mpm_event.conf
/etc/apache2/mods-available/mpm_prefork.conf
/etc/apache2/mods-available/proxy.conf
/etc/apache2/mods-available/negotiation.conf
/etc/apache2/mods-available/reqtimeout.conf
/etc/apache2/conf-enabled/other-vhosts-access-log.conf
/etc/apache2/conf-enabled/serve-cgi-bin.conf
/etc/apache2/conf-enabled/security.conf
/etc/apache2/conf-enabled/charset.conf
/etc/apache2/conf-enabled/localized-error-pages.conf
/etc/apache2/conf-enabled/apache2-doc.conf
/etc/apache2/mods-enabled/dir.conf
/etc/apache2/mods-enabled/autoindex.conf
/etc/apache2/mods-enabled/fcgid.conf
/etc/apache2/mods-enabled/alias.conf
/etc/apache2/mods-enabled/mime.conf
/etc/apache2/mods-enabled/php5.conf
/etc/apache2/mods-enabled/status.conf
/etc/apache2/mods-enabled/deflate.conf
/etc/apache2/mods-enabled/setenvif.conf
/etc/apache2/mods-enabled/mpm_prefork.conf
/etc/apache2/mods-enabled/negotiation.conf
/etc/apache2/conf-available/other-vhosts-access-log.conf
/etc/apache2/conf-available/php5-cgi.conf
/etc/apache2/conf-available/serve-cgi-bin.conf
/etc/apache2/conf-available/security.conf
/etc/apache2/conf-available/javascript-common.conf
/etc/apache2/conf-available/charset.conf
/etc/apache2/conf-available/localized-error-pages.conf
/etc/apache2/conf-available/apache2-doc.conf
/etc/apache2/sites-available/default-ssl.conf
/etc/apache2/sites-available/000-default.conf
/etc/apache2/ports.conf
/etc/apache2/apache2.conf
/etc/apache2/sites-enabled/000-default.conf

为apache设置一个非标准端口:

代码语言:javascript
复制
vim /etc/apache2/ports.conf
Listen 8000

重新启动apache (对debian):

代码语言:javascript
复制
sudo service apache2 restart

并将html文件以及javascript依赖项复制到web根目录:

代码语言:javascript
复制
sudo cp -r ethreum_js/ /var/www/html

您还可以创建一个虚拟主机来测试web3.js的功能。

票数 1
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/6871

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档