我有以下代码,我想更新到Python 3.x. 所需的库将更改为http.client和json。
我似乎无法理解如何做到这一点。你能帮忙吗?
import urllib2
import json
data = {"text": "Hello world github/linguist#1 **cool**, and #1!"}
json_data = json.dumps(data)
req = urllib2.Request("https://api.github.com/markdown")
result = urllib2.urlopen(req, json_data)
print '\n'.join(result.readlines())
答案 0 :(得分:29)
import http.client
import json
connection = http.client.HTTPSConnection('api.github.com')
headers = {'Content-type': 'application/json'}
foo = {'text': 'Hello world github/linguist#1 **cool**, and #1!'}
json_foo = json.dumps(foo)
connection.request('POST', '/markdown', json_foo, headers)
response = connection.getresponse()
print(response.read().decode())
我会引导你完成它。首先,您需要创建一个TCP连接,用于与远程服务器通信。
>>> connection = http.client.HTTPSConnection('api.github.com')
- http.client.HTTPSConnection()
您需要指定请求标头。
>>> headers = {'Content-type': 'application/json'}
在这种情况下,我们说请求主体属于application / json类型。
接下来,我们将从python dict()
生成json数据>>> foo = {'text': 'Hello world github/linguist#1 **cool**, and #1!'}
>>> json_foo = json.dumps(foo)
然后我们通过HTTPS连接发送HTTP请求。
>>> connection.request('POST', '/markdown', json_foo, headers)
获取回复并阅读。
>>> response = connection.getresponse()
>>> response.read()
b'<p>Hello world github/linguist#1 <strong>cool</strong>, and #1!</p>'
答案 1 :(得分:1)
为了使您的代码与Python 3兼容,只需假设utf-8
无处不在,就可以更改import语句和编码/解码数据:
import json
from urllib.request import urlopen
data = {"text": "Hello world github/linguist№1 **cool**, and #1!"}
response = urlopen("https://api.github.com/markdown", json.dumps(data).encode())
print(response.read().decode())
答案 2 :(得分:0)
conn = http.client.HTTPSConnection('https://api.github.com/markdown')
conn.request("GET", "/markdown")
r1 = conn.getresponse()
print r1.read()