[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