Остановить модули Perl XS от автоматического возврата к чистому Perl

Кажется, что некоторые (многие?) Модули на CPAN частично реализованы на C с использованием XS, и при необходимости могут вернуться к реализации на чистом Perl. Пока это умно, Вот код, который возвращает код HTTP: 302, перемещенный импорт httplib, urllib params = urllib.urlencode ({'isbn': '...

Я пытаюсь сделать запрос POST, чтобы получить информацию о книге. Вот код, который возвращает HTTP-код: 302, Moved

import httplib, urllib
params = urllib.urlencode({
    'isbn' : '9780131185838',
    'catalogId' : '10001',
    'schoolStoreId' : '15828',
    'search' : 'Search'
    })
headers = {"Content-type": "application/x-www-form-urlencoded",
           "Accept": "text/plain"}
conn = httplib.HTTPConnection("bkstr.com:80")
conn.request("POST", "/webapp/wcs/stores/servlet/BuybackSearch",
             params, headers)
response = conn.getresponse()
print response.status, response.reason
data = response.read()
conn.close()

Когда я пытаюсь из браузера, с этой страницы: http://www.bkstr.com/webapp/wcs/stores/servlet/BuybackMaterialsView?langId = -1 & catalogId = 10001 & storeId = 10051 & schoolStoreId = 15828 , это работает. Что мне не хватает в моем коде?

РЕДАКТИРОВАТЬ: Вот что я получаю, когда вызываю print response.msg

302 Moved Date: Tue, 07 Sep 2010 16:54:29 GMT
Vary: Host,Accept-Encoding,User-Agent
Location: http://www.bkstr.com/webapp/wcs/stores/servlet/BuybackSearch
X-UA-Compatible: IE=EmulateIE7
Content-Length: 0
Content-Type: text/plain; charset=utf-8

Кажется, что местоположение указывает на тот же URL-адрес, к которому я пытаюсь получить доступ в первую очередь?

EDIT2:

Я пробовал использовать urllib2, как было предложено Вот. Вот код:

import urllib, urllib2

url = 'http://www.bkstr.com/webapp/wcs/stores/servlet/BuybackSearch'
values = {'isbn' : '9780131185838',
          'catalogId' : '10001',
          'schoolStoreId' : '15828',
          'search' : 'Search' }


data = urllib.urlencode(values)
req = urllib2.Request(url, data)
response = urllib2.urlopen(req)
print response.geturl()
print response.info()
the_page = response.read()
print the_page

И вот результат:

http://www.bkstr.com/webapp/wcs/stores/servlet/BuybackSearch
Date: Tue, 07 Sep 2010 16:58:35 GMT
Pragma: No-cache
Cache-Control: no-cache
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Set-Cookie: JSESSIONID=0001REjqgX2axkzlR6SvIJlgJkt:1311s25dm; Path=/
Vary: Accept-Encoding,User-Agent
X-UA-Compatible: IE=EmulateIE7
Content-Length: 0
Connection: close
Content-Type: text/html; charset=utf-8
Content-Language: en-US
Set-Cookie: TSde3575=225ec58bcb0fdddfad7332c2816f1f152224db2f71e1b0474c866f3b; Path=/

23
задан infrared 17 September 2011 в 21:18
поделиться