Jeg vil utføre en curl-kommando i python.
Vanligvis trenger jeg bare å skrive inn kommandoen i terminalen og trykke på returtasten. Imidlertid vet jeg ikke hvordan det fungerer i python. Kommandoen vises nedenfor: < / p >;curl -d @request.json --header "Content-Type: application/json" https://www.googleapis.com/qpxExpress/v1/trips/search?key=mykeyhere
Det er en request.json-fil som skal sendes for å få svar.
Jeg søkte mye og ble forvirret. Jeg prøvde å skrive et stykke kode, selv om jeg ikke helt kunne forstå. Det fungerte ikke.import pycurl
import StringIO
response = StringIO.StringIO()
c = pycurl.Curl()
c.setopt(c.URL, 'https://www.googleapis.com/qpxExpress/v1/trips/search?key=mykeyhere')
c.setopt(c.WRITEFUNCTION, response.write)
c.setopt(c.HTTPHEADER, ['Content-Type: application/json','Accept-Charset: UTF-8'])
c.setopt(c.POSTFIELDS, '@request.json')
c.perform()
c.close()
print response.getvalue()
response.close()
Feilmeldingen er ' Parse Error & 39;. Kan noen fortelle meg hvordan jeg fikser det? eller hvordan jeg får svar fra severen riktig?
For enkelhets skyld bør du kanskje vurdere å bruke biblioteket Requests.
Et eksempel med json-svarinnhold vil være noe sånt som:
import requests
r = requests.get('https://github.com/timeline.json')
r.json()
Hvis du ser etter mer informasjon, i Quickstart seksjonen, har de mange fungerende eksempler.
REDIGER:
For din spesifikke krølloversettelse:
import requests
url = 'https://www.googleapis.com/qpxExpress/v1/trips/search?key=mykeyhere'
payload = open("request.json")
headers = {'content-type': 'application/json', 'Accept-Charset': 'UTF-8'}
r = requests.post(url, data=payload, headers=headers)
import requests
url = "https://www.googleapis.com/qpxExpress/v1/trips/search?key=mykeyhere"
data = requests.get(url).json
kanskje?
hvis du prøver å sende en fil
files = {'request_file': open('request.json', 'rb')}
r = requests.post(url, files=files)
print r.text, print r.json
ahh takk @LukasGraf nå forstår jeg bedre hva hans opprinnelige kode gjør
import requests,json
url = "https://www.googleapis.com/qpxExpress/v1/trips/search?key=mykeyhere"
my_json_data = json.load(open("request.json"))
req = requests.post(url,data=my_json_data)
print req.text
print
print req.json # maybe?
curl -d @request.json --header "Content-Type: application/json" https://www.googleapis.com/qpxExpress/v1/trips/search?key=mykeyhere
dens python-implementering være som
import requests
headers = {
'Content-Type': 'application/json',
}
params = (
('key', 'mykeyhere'),
)
data = open('request.json')
response = requests.post('https://www.googleapis.com/qpxExpress/v1/trips/search', headers=headers, params=params, data=data)
#NB. Original query string below. It seems impossible to parse and
#reproduce query strings 100% accurately so the one below is given
#in case the reproduced version is not "correct".
# response = requests.post('https://www.googleapis.com/qpxExpress/v1/trips/search?key=mykeyhere', headers=headers, data=data)
sjekk denne lenken, det vil bidra til å konvertere cURl-kommandoen til python, php og nodejs.