因为我只能使用一组受限的Ruby 1.9.3基础库来处理打包应用程序的脚本环境,所以我只能使用TCPSocket来访问互联网。特别是,我不能使用net/http或json或uri...
尽管如此,我还是想称之为Azure ML模型端点。
下面是我正在尝试做的事情,但不幸的是,我从“socket.gets”得到一个错误:
Errno::ECONNRESET(远程主机强制关闭了一个现有的连接。@ io_fillbuf - fd:3)
require 'socket'
data = '{
"Inputs": {
"data": [
{
"Column1": "example_value",
"Column2": 0
}
]
},
"GlobalParameters": {
"method": "predict"
}
}'
# Send the HTTP request
socket = TCPSocket.open('xxxxx-ml-yyyyy.northeurope.inference.ml.azure.com', 443)
request = "POST 'xxxxx-ml-yyyyy.northeurope.inference.ml.azure.com HTTP/1.1\r\n"
request += "Host: xxxxx-ml-yyyyy.northeurope.inference.ml.azure.com\r\n"
request += "Content-Type: application/json\r\n"
request += "Authorization: Bearer 1234567890abcdefghjklmnopqrstuvwx\r\n"
request += "Content-Length: #{data.bytesize}\r\n"
request += "\r\n"
request += data
socket.print(request)
# Get the response
response = ""
while line = socket.gets
response += line
end
# Close the socket
socket.close
puts response
(可与irb 2.5.3重现)
在同一台机器上通过Python调用Endpoint工作得很好。所以我想我的HTTP请求是错误的?
1条答案
按热度按时间d8tt03nd1#
试试下面的代码
这是我得到的结果。我也和 Postman 验证了这一点。