0

我正在尝试使用 Python 成功连接到 LinkPoint 网关。对于那些不熟悉他们的 API 的人,您会得到一个.pem用于身份验证的文件。

我在使用此文件和通过 SSL 创建安全连接时遇到问题。

根据他们的 API 文档(顺便说一句,还有很多不足之处),我相信配置应该如下所示:

HOST = 'secure.linkpt.net'
API_URL = 'https://secure.linkpt.net/lpc/servlet/lppay'
PORT = 1129
cert_key = my_cert_key.pem

使用此信息和有效XML字符串如何创建此连接?

我对HTTPPython 中的连接很陌生。我已经使用POSTwith成功实现了与其他 API 的连接urllib2。自然地,我的第一次尝试是从一个类似的方法开始的,希望我能偶然找到一个解决方案。

就像是:

headers = { 'User-Agent'     : 'Rico',
            'Content-type'   : 'text/xml; charset=\"UTF-8\"',
            'Content-length' : len(self.xml_string),
          }

# POST to First Data (Link Point)
req = urllib2.Request(API_URL, self.xml_string, headers)
response = urllib2.urlopen(req)
self.handleResponse(response.read())

我几乎不希望这会奏效,因为我没有提供有关cert_key或 的任何信息PORT

在此尝试之后,我尝试使用从另一个stackoverflow帖子的解决方案中找到的类似方法。不幸的是,由于我没有文件(我知道),所以我无法做到这ca_certs一点cert

我尝试使用请求,但找不到文档/示例让我理解它。

我也尝试过使用Twisted,我真的希望我能用它做点什么,但这感觉就像试图用破坏球打开一扇门。对我来说,这感觉有点矫枉过正。我只需要一个简单的连接/请求/响应......这似乎过于复杂。

我的下一个尝试是PycURL,但在这个过程中遇到了足够的绝望,我想我会来这里看看是否有人在深入研究之前有一些好的建议。

如果您认为我应该重新访问这些工具之一,请告诉我。我并没有花太多时间在这些上——只是让我的脚湿透了。如果您还可以向我指出一个很好的示例或详细的文档,那就太好了。

另外,我不希望自己使用标准SSL库来建立连接——如果我不需要的话,我不想重新发明轮子。

4

1 回答 1

0

我能够用来获得有效连接的解决方案使用httplib如下:

import httplib

HOST = 'staging.linkpt.net'
API_URL = '/lpc/servlet/lppay'
PORT = 1129
CERTFILE = 'my_cert_file.pem'

headers = { 'User-Agent'     : 'Rico',
            'Content-type'   : 'text/xml; charset=\"UTF-8\"',
            'Content-length' : len(xml_str),
          }

conn = httplib.HTTPSConnection(HOST, PORT, cert_file = CERTFILE)
conn.putrequest("POST", API_URL)
conn.putheader(headers)
conn.endheaders()
conn.send(xml_str)
response = conn.getresponse()

我还不能生成一个有效的请求。显然我错误地解释了 API 文档并不断得到一个Malformed or unrecognized request.,但至少我正在建立连接。

如果我能够确定有关此主题的更多有用信息,我将更新此答案。

更新:Link Point 客户服务员工告诉我,我使用的是旧的 API 文档。我已经尝试使用较新的版本,但仍然无法连接。我什至无法从他们的服务器得到响应。这不再是解决此问题的可能方法。

更新 2:我能够在另一篇文章SSL Connection Using .pem Certificate With Python中解决了这个问题

享受!

于 2012-07-20T01:34:44.377 回答