Saya ingin menjalankan perintah curl dengan python.
Biasanya, saya hanya perlu memasukkan perintah di terminal dan tekan tombol kembali. Namun, saya tidak tahu cara kerjanya di python.
Perintah ini menunjukkan di bawah ini:
curl -d @request.json --header "Content-Type: application/json" https://www.googleapis.com/qpxExpress/v1/trips/search?key=mykeyhere
Ada file request.json yang akan dikirim untuk mendapatkan respons.
Saya banyak mencari dan bingung. Saya mencoba menulis sepotong kode, walaupun saya tidak dapat sepenuhnya mengerti. Itu tidak berhasil.
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()
Pesan kesalahannya adalah 'Parse Error'.Bisakah ada yang memberi tahu saya cara memperbaikinya? atau bagaimana mendapatkan respons dari server dengan benar?
Jawaban:
Demi kesederhanaan, mungkin Anda harus mempertimbangkan untuk menggunakan perpustakaan Permintaan .
Contoh dengan konten respons json akan seperti:
Jika Anda mencari informasi lebih lanjut, di bagian Quickstart , mereka memiliki banyak contoh yang berfungsi.
EDIT:
Untuk terjemahan ikal spesifik Anda:
sumber
'Accept-Charset': 'UTF-8'
Requests
adalah ketergantungan tambahan yang Anda perlukan untuk menginstal dan mengelola. Untuk solusi sederhana menggunakan perpustakaan standar saja, lihat stackoverflow.com/a/13921930/111995Cukup gunakan situs web ini . Ini akan mengubah perintah curl menjadi Python, Node.js, PHP, R, atau Go.
Contoh:
Menjadi ini dengan Python,
sumber
mungkin?
jika Anda mencoba mengirim file
ahh terima kasih @LukasGraf sekarang saya lebih mengerti apa yang dilakukan kode aslinya
sumber
requests.json
file, dan tidak mengaturContent-Type: application/json
header - juga, ini akan mengirimGET
permintaan, bukan aPOST
.curl -d @<file>
akan membaca bidang yang akan dikirimi<file>
- itu tidak sama dengan unggahan file.data = requests.get(url).json
harusdata = requests.get(url).json()
implementasi python-nya seperti
periksa tautan ini , ini akan membantu mengubah perintah cURl ke python, php dan nodejs
sumber
Jawaban saya adalah WRT python 2.6.2.
Saya minta maaf karena tidak memberikan parameter yang diperlukan karena itu rahasia.
sumber
Beberapa latar belakang: Saya mencari pertanyaan ini karena saya harus melakukan sesuatu untuk mengambil konten, tetapi yang saya miliki hanyalah versi python lama dengan dukungan SSL yang tidak memadai. Jika Anda menggunakan MacBook lama, Anda tahu apa yang saya bicarakan. Bagaimanapun,
curl
berjalan dengan baik dari shell (saya kira itu memiliki dukungan SSL modern yang terhubung) jadi kadang-kadang Anda ingin melakukan ini tanpa menggunakanrequests
atauurllib2
.Anda dapat menggunakan
subprocess
modul untuk mengeksekusicurl
dan mendapatkan konten yang diambil:subprocess
Modul Python 3 juga berisi.run()
sejumlah opsi yang bermanfaat. Saya akan menyerahkannya kepada seseorang yang benar-benar menjalankan python 3 untuk memberikan jawaban itu.sumber
Ini dapat dicapai dengan pendekatan kode psuedo yang disebutkan di bawah ini
Impor atau impor permintaan Data = os.execute (URL curl) R = Data.json ()
sumber