【发布时间】:2017-03-08 19:37:24
【问题描述】:
我正在尝试使用用户 ID 和密码创建与 Money.net API 的安全连接,但我没有收到来自服务器的任何响应。我正在使用 Ipython Notebook 进行开发,我是编程和 Python 世界的新手 :)
import socket
import sys
Server_address = ('api.data.money.net',50010)
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
print sys.stderr, 'connecting to %s port %s' %Server_address
s.connect(Server_address)
####### I pass plain text authentication credentials below #####
username, password, DATA
什么都没有发生,服务器没有按预期回复“OK”
我也尝试了下面的 TLS socket.wrap 方法,但它显示“连接超时”
import socket
import ssl
# SET VARIABLES
#packet, reply = "QS MSFT", ""
HOST, PORT = 'api.data.money.net', 50010
# CREATE SOCKET
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(30)
# WRAP SOCKET
wrappedSocket = ssl.wrap_socket(sock,keyfile=None,server_side=0,
ssl_version=ssl.PROTOCOL_TLSv1, cert_reqs=ssl.CERT_NONE,do_handshake_on_connect=True)
# CONNECT AND PRINT REPLY
wrappedSocket.connect((HOST, PORT))
#Plain Text authentication
'username','password'
我收到回复
'username','password'
然后我执行以下操作
packet,reply="QS MSFT",""
wrappedSocket.send(packet)
print wrappedSocket.recv(1280)
我最后得到以下错误
SSLError: ('The read operation timed out',)
【问题讨论】:
-
您能否提供指向此 API 文档的链接?另外,我在这里没有任何代码来创建“安全”连接。
-
嗨 James - 链接如下money.net/datafeed
-
所以,就像@Jean-Paul 建议的那样,文档说“...您必须使用 TLS 进行连接。我们的服务器将为 *.data.money.net...提供一个 TLS 证书...”。你应该看看pythonssl module
-
@James - 我尝试通过 TLS 连接,但我仍然遇到错误。
标签: python-2.7 sockets networking tcp-ip tls1.2