urllib2 oddites базовой аутентификации

Я бьюсь головой об стену этим. Я пробовал каждый пример, читая каждый последний бит, который я могу найти в Интернете о базовой HTTP-авторизации с помощью urllib2, я не могу понять, что вызывает мою конкретную ошибку.

Разочарование усугубляется тем, что код работает для одной страницы, а для другой - нет. вход на сайт www.mysite.com/adm проходит абсолютно гладко. Это не проблема аутентификации. Однако если я изменю адрес на 'http://mysite.com/adm/items.php?n=201105&c=200', я получаю эту ошибку:

<h4 align="center" class="teal">Add/Edit Items</h4>
<p><strong>Client:</strong> </p><p><strong>Event:</strong> </p><p class="error">Not enough information to complete this task</p>

<p class="error">This is a fatal error so I am exiting now.</p>

Поиск в Google привел к нулевой информации об этой ошибке.

ADM - это страница с набором фреймов, я не уверен, что это вообще актуально.

Вот текущий код:

import urllib2, urllib
import sys

import re
import base64
from urlparse import urlparse

theurl = 'http://xxxxxmedia.com/adm/items.php?n=201105&c=200'
username = 'XXXX'
password = 'XXXX'

passman = urllib2.HTTPPasswordMgrWithDefaultRealm()
passman.add_password(None, theurl,username,password)

authhandler = urllib2.HTTPBasicAuthHandler(passman)

opener = urllib2.build_opener(authhandler)

urllib2.install_opener(opener)

pagehandle = urllib2.urlopen(theurl)

url = 'http://xxxxxxxmedia.com/adm/items.php?n=201105&c=200'
values = {'AvAudioCD': 1,
          'AvAudioCDDiscount': 00, 'AvAudioCDPrice': 50,
          'ProductName': 'python test', 'frmSubmit': 'Submit' }

#opener2 = urllib2.build_opener(urllib2.HTTPCookieProcessor())
data = urllib.urlencode(values)
req = urllib2.Request(url, data)
response = urllib2.urlopen(req)

Это лишь одна из многих версий, которые я пробовал. Я следил за всеми примерами из Urllib2 Missing Manual, но все равно получаю ту же ошибку.

Может ли кто-нибудь указать на то, что я делаю неправильно?

8
задан Zack 1 May 2012 в 13:41
поделиться