"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č.
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
> _______________________________________________
> Python mailing list
> Pyt...@py.cz
> http://www.py.cz/mailman/listinfo/python
>
>
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...@firma.seznam.cz>
> Předmět: Re: [python] HTTP Autorizace + metoda post
> Datum: 17.4.2008 08:46:00
> ----------------------------------------
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
> ------------ Původní zpráva ------------
> Od: Leos Pol <leos...@firma.seznam.cz>
> Předmět: Re: [python] HTTP Autorizace + metoda post
> Datum: 17.4.2008 13:12:01
> ----------------------------------------
A ty bys mohl napsat reportáž s funkčním kodem s komentáři a případně
malou teorií na py.cz? ;-)
--
geon
Pavel Kosina
> ------------ Původní zpráva ------------
> Od: Pavel Kosina <ge...@post.cz>
> Předmět: Re: [python] HTTP Autorizace + metoda post
> Datum: 17.4.2008 17:32:26
> ----------------------------------------
Rychlý návod pro příště:
1. Vyplnte vlevo nahoře "user"
2. V "content" odkliněte nadpis, pod který se nejvíc Vaše téma hodí
3. Dole napište název nové stránky
4. Pište v reStructuredTextu
5. preview
6. oprava
7. preview
8. Save
Díky
P.
Calis....@seznam.cz napsal(a):