2017-02-18 2 views
0

ich zur Zeit wie so zu einem Sever Posting:gibt es die JSON-Antwort von einem POST-Anfrage Python

req = urllib2.Request('http://xxx.xxx.xx.xx/upload/') 
req.add_header('Content-Type', 'application/json') 
response = urllib2.urlopen(req, json_string) 
print(response.getcode()) 

Ich erhalte einen 200-Code zurück aber ich will die JSON lesen der Server zurück sendet. Wie mache ich das? (Verknüpfen, um die Verwendung der Anforderungsbibliothek zu vermeiden)

+0

Von den [Dokumentation] (https: //docs.python.org/2/library/urllib2.html#urllib2.urlopen): getcode() - gibt den HTTP-Statuscode der Antwort zurück. –

Antwort

0

Ich habe keinen Code erhalten, weil ich keine URL hatte. Versuchen:

req = urllib2.Request('http://xxx.xxx.xx.xx/upload/') 
req.add_header('Content-Type', 'application/json') 
response = urllib2.urlopen(req, json_string) 
print(response.read()) 
0

Um das tatsächliche json Objekt aus der Antwort zu erhalten nicht nur die json serialisierten String Sie die Antwort mit der json Bibliothek

import json 
req = urllib2.Request('http://xxx.xxx.xx.xx/upload/') 
req.add_header('Content-Type', 'application/json') 
response = urllib2.urlopen(req, json_string) 
json_response = json.loads(response.read().decode('ascii')) 

Die Codierung auch analysieren, müssen utf-8 sein kann, je nach was der Server dir zurückschickt.

Alternativ könnten Sie die requests Bibliothek benutzen, die ich mit viel einfacher zu interagieren finden, werden Sie es separat installieren müssen allerdings mit pip install requests

import requests, json 
response = requests.post('http://xxx.xxx.xx.xx/upload', data={'data': json_string}) 
if response.ok: 
    response_json = response.json() 
else: 
    print('Something went wrong, server sent code {}'.format(response.status_code)) 

requests library docs

Verwandte Themen