[python] HTTP Autorizace + metoda post
Leos Pol
leos.pol na firma.seznam.cz
Čtvrtek Duben 17 13:11:18 CEST 2008
Ahoj,
tvuj server rika tohle: WWW-AuthenticateBasic realm="My Realm", takze
but nastav napevno realm na "My Realm" nebo uplne nejlepe udelat prvne
standardni dotaz, odchytit vyjimku HTTPError a z ni si dostat realm
(vyjimka.headers['www-authenticate']) a pak provest HTTPBasicAuthHandler
se spravnym realm. Mozna existuje jeste dalsi zpusob pomoci
HTTPPasswordMgrWithDefaultRealm, ale s tim nemam zkusenosti.
Leo
Calis.martin na seznam.cz wrote:
> To mě prozměnu vypíše toto:"Traceback (most recent call last):
> File "I:\Programy v Pythonu\MOJE\Ukoly\pripojeni.py", line 23, in <module>
> urllib2.urlopen(req)
> File "C:\Python25\lib\urllib2.py", line 121, in urlopen
> return _opener.open(url, data)
> File "C:\Python25\lib\urllib2.py", line 380, in open
> response = meth(req, response)
> File "C:\Python25\lib\urllib2.py", line 491, in http_response
> 'http', request, response, code, msg, hdrs)
> File "C:\Python25\lib\urllib2.py", line 418, in error
> return self._call_chain(*args)
> File "C:\Python25\lib\urllib2.py", line 353, in _call_chain
> result = func(*args)
> File "C:\Python25\lib\urllib2.py", line 499, in http_error_default
> raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
> urllib2.HTTPError: HTTP Error 401: Unauthorized"
>
> jedna se asi o chybu s "urllib2.urlopen(req)", nechal jsem si vypsat hodnotu req:"<urllib2.Request instance at 0x00A3ADC8>" což ale asi nijak nepomuže...
>
>
>> ------------ Původní zpráva ------------
>> Od: Leos Pol <leos.pol na firma.seznam.cz>
>> Předmět: Re: [python] HTTP Autorizace + metoda post
>> Datum: 17.4.2008 08:46:00
>> ----------------------------------------
>> Ahoj,
>>
>> chybka je v parametru uri, tam se ceka string nebo sekvence stringu.
>> Oprava je:
>>
>> auth_handler.add_password(realm='PDQ Application', uri=req.get_full_url(),
>> user='user', passwd='password')
>>
>>
>> Leo
>>
>> Calis.martin na seznam.cz wrote:
>>
>>> Dobrý den, nedávno jsem psal o svém problému ohldedně autorizace...
>>> Stále jsem na věc nepřišel. Napadlo mně udělat tohle:
>>>
>>> "import urllib2,urllib
>>>
>>> adresa = "http://www.cheatfella.com/authentifikace.php"
>>> parametry = {
>>> "print " : "Hello world"}
>>>
>>> params = urllib.urlencode(parametry) # Prekoduje parametry do tvaru vhodneho
>>>
>> pro odeslani
>>
>>> req = urllib2.Request(adresa, params) # Vytvori request, coz je smichanina
>>>
>> adresy a parametru, pripadne i hlavicek
>>
>>> #~ spojeni = urllib2.urlopen(req) # Otevre
>>> #~ spojeni.read()
>>> #~ spojeni.close()
>>>
>>>
>>>
>>>
>>> # Create an OpenerDirector with support for Basic HTTP Authentication...
>>> auth_handler = urllib2.HTTPBasicAuthHandler()
>>> auth_handler.add_password(realm='PDQ Application',
>>> uri=req,
>>> user='user',
>>> passwd='password')
>>> opener = urllib2.build_opener(auth_handler)
>>> # ...and install it globally so it can be used with urlopen.
>>> urllib2.install_opener(opener)
>>> urllib2.urlopen(req)"
>>>
>>> což nefunguje a vypíše nasledující hlášku: "
>>> Traceback (most recent call last):
>>> File "I:\Programy v Pythonu\MOJE\Ukoly\pripojeni.py", line 22, in <module>
>>> passwd='password')
>>> File "C:\Python25\lib\urllib2.py", line 706, in add_password
>>> [self.reduce_uri(u, default_port) for u in uri])
>>> TypeError: iteration over non-sequence"
>>>
>>>
>>> Nevíte kde je chyba?
>>>
>>> -----------------------------
>>> Moto: Teorie je, když všechno víme, ale nic nefunguje. Praxe je, když všechno
>>>
>> funguje, ale nikdo neví proč. My jsme spojili teorii s praxí - nic nefunguje a
>> nikdo neví proč.
>>
>>> _______________________________________________
>>> Python mailing list
>>> Python na py.cz
>>> http://www.py.cz/mailman/listinfo/python
>>>
>>>
>>>
>> _______________________________________________
>> Python mailing list
>> Python na py.cz
>> http://www.py.cz/mailman/listinfo/python
>>
>>
>>
>>
>
> -----------------------------
> Moto: Teorie je, když všechno víme, ale nic nefunguje. Praxe je, když všechno funguje, ale nikdo neví proč. My jsme spojili teorii s praxí - nic nefunguje a nikdo neví proč.
> _______________________________________________
> Python mailing list
> Python na py.cz
> http://www.py.cz/mailman/listinfo/python
>
>
Další informace o konferenci Python