python pycurl подача за мыльную ошибку гнутлей - PullRequest
0 голосов
/ 15 марта 2012

При попытке Pycurl для некоторого URL

 def call_soap_curl(ncServerURL, xml, action):

  c = pycurl.Curl()
  c.setopt(pycurl.URL, ncServerURL)
  c.setopt(pycurl.POST, 1)
  c.setopt(pycurl.SSL_VERIFYPEER, 0)
  c.setopt(pycurl.SSL_VERIFYHOST, 0)
  header=["Content-type: text/xml","SOAPAction:"+action,'Content-Type: text/xml; charset=utf-8','Content-Length: '+str(len(xml))]
  print header
  c.setopt(pycurl.HTTPHEADER, header)
  c.setopt(pycurl.POSTFIELDS, str(xml))
  import StringIO
  b = StringIO.StringIO()
  c.setopt(pycurl.WRITEFUNCTION, b.write)
  c.perform()
  ncServerData = b.getvalue()
  return ncServerData

Ошибка m:

(56, 'GnuTLS recv error (-9): A TLS packet with unexpected length was received.')
  @c.perform()

Пожалуйста, предложите, в чем может быть проблема, как я могу решить эту проблему. Использование Ubuntu и того же URL в curl в php работает

Это мой

 pycurl.version_info()
(3, '7.21.6', 464134, 'x86_64-pc-linux-gnu', 17981, 'GnuTLS/2.10.5', 0, '1.2.3.4', ('dict', 'file', 'ftp', 'ftps', 'gopher', 'http', 'https', 'imap', 'imaps', 'ldap', 'pop3', 'pop3s', 'rtmp', 'rtsp', 'smtp', 'smtps', 'telnet', 'tftp'), None, 0, '1.22')

1 Ответ

2 голосов
/ 27 июля 2012

Кажется, это проблема с libcurl, скомпилированным с GnuTLS.

В другом месте я читал:

https://bugs.launchpad.net/gwibber/+bug/626023/comments/28 также было предложено: «Единственный способ, которым мне удалось избавиться от этой ошибки, - это перекомпилировать libcurl с OpenSSL вместоGnuTLS, а затем перекомпилировать python-pycurl для новой библиотеки cURL

Я перекомпилировал libcurl с OpenSSL, как было предложено, и проблема была решена для меня. Я включил мой рецепт сюда для вдохновения, хотя это специфично для Ubuntu.

#!/bin/bash

sudo apt-get install libcurl4-openssl-dev

wget http://curl.haxx.se/download/curl-7.26.0.tar.gz
wget http://pycurl.sourceforge.net/download/pycurl-7.19.0.tar.gz
tar -xzvf pycurl-7.19.0.tar.gz
tar -xzvf curl-7.26.0.tar.gz
cd curl-7.26.0/
./configure --with-ssl
make
sudo make install
cd ../pycurl-7.19.0/
sudo python setup.py install

sudo ldconfig
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...