Найти - Пользователи
Полная версия: Очень нужна помощь с pycurl
Начало » Web » Очень нужна помощь с pycurl
1
Super_BOT
Всем привет, очень нужна помощь по pycurl'у.

Есть простой код на пайкурле, который посылает пост запрос. На страницу, которая выводит этот пост запрос ( Денвер на локальном компе).

Код php страницы, которая выводит пост запрос

test_curl.php
<?
print_r($_POST);
?>
И есть код на питоне, который отсылает на нее пост запрос

main.py
import StringIO
import pycurl


def GetPage( curl, url ):
resp = StringIO.StringIO()
curl.setopt(pycurl.WRITEFUNCTION, resp.write)
curl.setopt(pycurl.URL, url )
curl.perform()
the_page = resp.getvalue()
resp.close()
return the_page

def Test():
curl = pycurl.Curl()
aaa = 'SomeParam'

# NOT WORK
curl.setopt(pycurl.POSTFIELDS, r'params%5BsloganText%5D=...because+open+source+matters&params%5Bja_screen_width%5D=97&params%5Btheme_header%5D=green&params%5Btheme_background%5D=lighter&params%5Btheme_elements%5D=black&params%5BrightCollapsible%5D=1&params%5BrightCollapseDefault%5D=show&params%5BexcludeModules%5D=38&'+aaa+r'=1')

with open('pycurl_not_work.html','w') as f:
f.write( GetPage( curl, r'http://localhost/test_curl.php' ) )

# WORK
ddd = 'params%5BsloganText%5D=...because+open+source+matters&params%5Bja_screen_width%5D=97&params%5Btheme_header%5D=green&params%5Btheme_background%5D=lighter&params%5Btheme_elements%5D=black&params%5BrightCollapsible%5D=1&params%5BrightCollapseDefault%5D=show&params%5BexcludeModules%5D=38&'+aaa+'=1'
curl.setopt(pycurl.POSTFIELDS, ddd)

with open('pycurl_work.html','w') as f:
f.write( GetPage( curl, r'http://localhost/test_curl.php' ) )

if __name__=='__main__':
Test()
То есть отличие лишь в передаче параметра pycurl.POSTFIELDS

В итоге в
pycurl_work.html
Array
(
[params] => Array
(
[sloganText] => ...because open source matters
[ja_screen_width] => 97
[theme_header] => green
[theme_background] => lighter
[theme_elements] => black
[rightCollapsible] => 1
[rightCollapseDefault] => show
[excludeModules] => 38
)

[SomeParam] => 1
)
а в pycurl_not_work.html информация каждый раз разная, иногда попадает из заголовка, иногда просто портится кодировка, вообщем мистика какая-то.
Один из вариантов pycurl_not_work.html
Array
(
[l_php] => ...because open source matters
[params] => Array
(
[ja_screen_width] => 97
[theme_header] => green
[theme_background] => lighter
[theme_elements] => black
[rightCollapsible] => 1
)

[params_rightCollapseDefauДVцЧю] => 38
[SomeParam] => 1
)
Подскажите с чем это может быть связано???

P.S. скорее всего дело в параметрах в виде массива
Super_BOT
Еще одно дополнение, данная проблема обнаружена на Windows 7 64bit
На WinXP 32 все работает нормально
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB