【问题标题】:Interfacing to the LinkPoint API with Python - Sending XML Over SSL with Authentication使用 Python 连接 LinkPoint API - 通过 SSL 发送 XML 并进行身份验证
【发布时间】:2012-07-19 20:54:02
【问题描述】:

我正在尝试使用 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 字符串如何创建此连接?

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

类似:

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_keyPORT 的任何信息。

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

我尝试使用 Requests,但找不到让我理解的文档/示例。

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

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

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

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

【问题讨论】:

    标签: python xml api https linkpoint


    【解决方案1】:

    我能够用来获得有效连接的解决方案是使用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 中解决这个问题

    享受吧!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-27
      • 2017-02-04
      • 2012-02-10
      • 2014-06-13
      • 2018-01-24
      • 2012-06-13
      • 1970-01-01
      • 2017-03-03
      相关资源
      最近更新 更多