在pyodide中,它不支持requests模块,所以从我们使用open_url的api中获取数据,以及如何使用pyodide来发布数据
发布于 2020-11-11 23:46:56
pyodide当前不支持requests模块,因为它依赖于WebAssembly browser VM中未实现的套接字。
但是,您可以在pyodide中使用Web进行POST调用。下面是一个使用XMLHttpRequest的示例
from js import XMLHttpRequest, Blob
import json
data = {"a": 1}
req = XMLHttpRequest.new()
req.open("POST", "https://httpbin.org/anything", False)
blob = Blob.new([json.dumps(data)], {type : 'application/json'})
req.send(blob)
str(req.response)在未来,一些经典的超文本传输协议客户端模块可能会被打上补丁,以使用pyodide中的Web (参见pyodide#140)。
发布于 2020-11-12 20:50:01
您也可以使用JS Python直接形成Fetch API代码。为此,首先必须从js模块导入window对象。这是一个现场演示:
let python_code = `
from js import window
def fetch():
window.fetch('http://karay.me/truepyxel/test.json').then(lambda resp: resp.json()).then(lambda jsoh: show_result(jsoh))
def show_result(data):
div = window.document.createElement('div')
#insert into body as a first child
window.document.body.prepend(div)
div.innerHTML=window.JSON.stringify(data)
`
// init environment
languagePluginLoader
// then run Python code
.then(() => pyodide.runPythonAsync(python_code));<!DOCTYPE html>
<html>
<head>
<script src="https://pyodide-cdn2.iodide.io/v0.15.0/full/pyodide.js"></script>
</head>
<body>
<button onclick='pyodide.globals.fetch()'>Fetch</button>
</body>
</html>
https://stackoverflow.com/questions/64789154
复制相似问题