w curl zrobić to:kod Python jak curl
curl -u email:password http://api.foursquare.com/v1/venue.json?vid=2393749
Jak mogę zrobić to samo w Pythonie?
w curl zrobić to:kod Python jak curl
curl -u email:password http://api.foursquare.com/v1/venue.json?vid=2393749
Jak mogę zrobić to samo w Pythonie?
„Problem może być, że biblioteki Python, za HTTP-Standard, najpierw wysłać nieuwierzytelniony wniosek, i to tylko wtedy, to odpowiedział 401 ponownego są poprawne poświadczenia wysłana If. Foursquare serwery nie rób „całkowicie standardowego uwierzytelniania”, a następnie biblioteki nie będzie działać
Spróbuj użyć nagłówków zrobić uwierzytelniania.”
stwierdzałem z Python urllib2 Basic Auth Problem
import urllib2
import base64
req = urllib2.Request('http://api.foursquare.com/v1/venue.json?vid=%s' % self.venue_id)
req.add_header('Authorization: Basic ',base64.b64encode('email:password'))
res = urllib2.urlopen(req)
Zastosowanie pycurl
znajduje się omówienie tak TUTORIALS
typowego przykładu
import sys
import pycurl
class ContentCallback:
def __init__(self):
self.contents = ''
def content_callback(self, buf):
self.contents = self.contents + buf
t = ContentCallback()
curlObj = pycurl.Curl()
curlObj.setopt(curlObj.URL, 'http://www.google.com')
curlObj.setopt(curlObj.WRITEFUNCTION, t.content_callback)
curlObj.perform()
curlObj.close()
print t.contents
Możesz użyć 'pycurl', ale nie jest to wymagane. Jest całkiem możliwe korzystanie z biblioteki standardowej. Zobacz pytanie, które podałem powyżej. –
Oto odpowiednik w pycurl:
import pycurl
from StringIO import StringIO
response_buffer = StringIO()
curl = pycurl.Curl()
curl.setopt(curl.URL, "http://api.foursquare.com/v1/venue.json?vid=2393749")
curl.setopt(curl.USERPWD, '%s:%s' % ('youruser', 'yourpassword'))
curl.setopt(curl.WRITEFUNCTION, response_buffer.write)
curl.perform()
curl.close()
response_value = response_buffer.getvalue()
jestem bardziej komfortowe prowadzenie zwijania linii poleceń poprzez podproces. W ten sposób unika się wszystkich potencjalnych wersji pasujących do bóle głowy pythona, pycurl i libcurl. Obserwacja, że pycurl nie została dotknięta w ciągu 2 lat i jest wymieniona tylko jako wspierana przez Python 2.5, wzbudziła we mnie ostrożność. - John
import subprocess
def curl(*args):
curl_path = '/usr/bin/curl'
curl_list = [curl_path]
for arg in args:
curl_list.append(arg)
curl_result = subprocess.Popen(
curl_list,
stderr=subprocess.PIPE,
stdout=subprocess.PIPE).communicate()[0]
return curl_result
answer = curl('-u', 'email:password', 'http://api.foursquare.com/v1/venue.json?vid=2393749')
jeśli użycie human_curl można napisać kod
import human_curl jak rzucić
r = hurl.get('http://api.foursquare.com/v1/venue.json?vid=2393749', auth=('email','password'))
danych JSON w r.content
See [Python urllib2 podstawowe Autentyczna Problem ] (http: // stackoverflow .com/questions/2407126/python-urllib2-basic-auth-problem), który dotyczy korzystania z Basic Auth z Foursquare na Pythonie. –