Python http.client json solicitud y respuesta. ¿Cómo?

Tengo el siguiente código que me gustaría actualizar a Python 3.x Las bibliotecas requeridas cambiarían a http.client y json.

Parece que no puedo entender cómo hacerlo. ¿Puedes por favor ayudar?

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

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

Te guiaré a través de esto. Primero deberá crear una conexión TCP que usará para comunicarse con el servidor remoto.

 >>> connection = http.client.HTTPSConnection('api.github.com') 

http.client.HTTPSConnection()

A continuación, deberá especificar los encabezados de solicitud.

 >>> headers = {'Content-type': 'application/json'} 

En este caso, estamos diciendo que el cuerpo de la solicitud es del tipo application / json.

A continuación, generaremos los datos json de un dict de python ()

 >>> foo = {'text': 'Hello world github/linguist#1 **cool**, and #1!'} >>> json_foo = json.dumps(foo) 

Luego enviamos una solicitud HTTP a través de la conexión HTTPS.

 >>> connection.request('POST', '/markdown', json_foo, headers) 

Obtenga la respuesta y léala.

 >>> response = connection.getresponse() >>> response.read() b'

Hello world github/linguist#1 cool, and #1!

'

Para hacer que su código Python 3 sea compatible es suficiente con cambiar las declaraciones de importación y codificar / descodificar datos asumiendo utf-8 todas partes:

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

Ver otro ejemplo de publicación https .

 conn = http.client.HTTPSConnection('https://api.github.com/markdown') conn.request("GET", "/markdown") r1 = conn.getresponse() print r1.read()