SORU
11 Mart 2009, ÇARŞAMBA


Urllib2, HTTP kimlik doğrulaması, tr temel Python.im

Oyun oynamayı, http://tr.imkullanmak için bazı kod yazmaya çalışıyorum. Bir URL kısaltmak için API (http://tr.im/api/).

http://docs.python.org/library/urllib2.html, okuduktan sonra denedim:

   TRIM_API_URL = 'http://api.tr.im/api'
   auth_handler = urllib2.HTTPBasicAuthHandler()
   auth_handler.add_password(realm='tr.im',
                             uri=TRIM_API_URL,
                             user=USERNAME,
                             passwd=PASSWORD)
   opener = urllib2.build_opener(auth_handler)
   urllib2.install_opener(opener)
   response = urllib2.urlopen('%s/trim_simple?url=%s'
                              % (TRIM_API_URL, url_to_trim))
   url = response.read().strip()

yanıt.kodu 200 (202 olması gerektiğini düşünüyorum). url geçerli ama. temel HTTP kimlik doğrulaması çalışmış, çünkü görünmüyor kısaltılmış URL, URL listemde (http://tr.im/?page=1) değil.

Sonra okuma http://www.voidspace.org.uk/python/articles/authentication.shtml#doing-it-properly Ben de denedim:

   TRIM_API_URL = 'api.tr.im/api'
   password_mgr = urllib2.HTTPPasswordMgrWithDefaultRealm()
   password_mgr.add_password(None, TRIM_API_URL, USERNAME, PASSWORD)
   auth_handler = urllib2.HTTPBasicAuthHandler(password_mgr)
   opener = urllib2.build_opener(auth_handler)
   urllib2.install_opener(opener)
   response = urllib2.urlopen('http://%s/trim_simple?url=%s'
                              % (TRIM_API_URL, url_to_trim))
   url = response.read().strip()

Ama aynı sonuçları alıyorum. (yanıt.kod 200 ve url geçerli değil. ama http://tr.im/. benim hesap kayıtlı değil)

Eğer temel HTTP kimlik doğrulaması yerine sorgu dizesi parametreleri kullanırsam bu gibi:

   TRIM_API_URL = 'http://api.tr.im/api'
   response = urllib2.urlopen('%s/trim_simple?url=%s&username=%s&password=%s'
                              % (TRIM_API_URL,
                                 url_to_trim,
                                 USERNAME,
                                 PASSWORD))
   url = response.read().strip()

...sonra sadece url geçerli değil ama benim tr kaydedildi.ım hesabı. (Gerçi cevabı.kod hala 200'dür.)

(Tr değil.ama bir şey benim koduyla yanlış olmalı im API), çünkü

$ curl -u yacitus:xxxx http://api.tr.im/api/trim_url.json?url=http://www.google.co.uk

...verir:

{"trimpath":"hfhb","reference":"nH45bftZDWOX0QpVojeDbOvPDnaRaJ","trimmed":"11\/03\/2009","destination":"http:\/\/www.google.co.uk\/","trim_path":"hfhb","domain":"google.co.uk","url":"http:\/\/tr.im\/hfhb","visits":0,"status":{"result":"OK","code":"200","message":"tr.im URL Added."},"date_time":"2009-03-11T10:15:35-04:00"}

...ve URL http://tr.im/?page=1 URL listemde görünmüyor.

Ve eğer kaçarsam:

$ curl -u yacitus:xxxx http://api.tr.im/api/trim_url.json?url=http://www.google.co.uk

bir daha alıyorum:

{"trimpath":"hfhb","reference":"nH45bftZDWOX0QpVojeDbOvPDnaRaJ","trimmed":"11\/03\/2009","destination":"http:\/\/www.google.co.uk\/","trim_path":"hfhb","domain":"google.co.uk","url":"http:\/\/tr.im\/hfhb","visits":0,"status":{"result":"OK","code":"201","message":"tr.im URL Already Created [yacitus]."},"date_time":"2009-03-11T10:15:35-04:00"}

Not kod 201 ve "tr.mesajdır ben Zaten [yacitus] URL Yarattı."

Doğru temel HTTP kimlik doğrulaması (ya da girişimi) yapıyor olmalıyım. Benim sorunum nokta olabilir? Belki de bakmak ve kablo gönderilmekte olan ne yapmalıyım? Daha önce hiç böyle bir şey yapmadım. Kullanabileceğim API (belki pdb) Python var mı? Ya da kullanabileceğim başka bir aracı (tercihen Mac OS X için).

CEVAP
15 Kasım 2010, PAZARTESİ


Bu gerçekten iyi çalışıyor (başka bir iş parçacığı alınan) gibi görünüyor

import urllib2, base64

request = urllib2.Request("http://api.foursquare.com/v1/user")
base64string = base64.encodestring('%s:%s' % (username, password)).replace('\n', '')
request.add_header("Authorization", "Basic %s" % base64string)   
result = urllib2.urlopen(request)

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • KliptOut KwazeeKilla

    KliptOut Kwa

    24 ŞUBAT 2010
  • Blu animations and other videos

    Blu animatio

    15 HAZİRAN 2007
  • superflyy88

    superflyy88

    8 ŞUBAT 2009