29

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())
4

3 に答える 3

60
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>'
于 2012-08-01T17:12:03.180 に答える
1

コードをPython3と互換性を持たせるには、インポートステートメントを変更し、データをエンコード/デコードするだけで十分utf-8です。

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())

別のhttps投稿の例を参照してください。

于 2012-08-01T18:30:03.307 に答える
0
conn = http.client.HTTPSConnection('https://api.github.com/markdown')
conn.request("GET", "/markdown")
r1 = conn.getresponse()
print r1.read()
于 2012-08-01T16:57:25.933 に答える