2017-09-06 33 views
0

Snapd有documentation on a REST APISnapd的API期望什么样的消息?

我能够从C#连接到插座中使用以下

var snapSocket = new Socket(AddressFamily.Unix, SocketType.Stream, ProtocolType.IP); 
var snapEndpoint = new UnixEndPoint("/run/snapd.socket"); 
snapSocket.Connect(snapEndpoint); 
var req = Encoding.ASCII.GetBytes("GET /v2/system-info HTTP/1.1"); 
snapSocket.Send(req, req.Length, 0); 
var bytesReceived = new byte[256]; 
var bytes = 0; 
var response = ""; 
do 
{ 
    bytes = snapSocket.Receive(bytesReceived, bytesReceived.Length, 0); 
    response = response + Encoding.ASCII.GetString(bytesReceived, 0, bytes); 
} while (bytes > 0); 
Console.WriteLine(response); 

但是,一切都停止在snapSocket.Receive - 响应不会发送。我怀疑我发送的邮件有问题。

回答

0

事实证明,它需要一个标准的HTTP请求,这意味着Host:线,Connection: Close线,并且需要 \n s的最末端。

文档的以下要求...

虽然有望让客户端使用HTTPS通过TCP套接字连接在这一点上仅支持UNIX插座。

...只意味着暗示HTTP 小号TCP还不能正常工作 - HTTP 使用Unix套接字,即使是目前有效的请求格式。

0

我在C#我不流畅可言,但也许这条巨蟒片段可以帮助引导到一个解决方案:

import requests_unixsocket 
session = requests_unixsocket.Session() 
r = session.get('http+unix://%2Frun%2Fsnapd.socket/v2/snaps') 
r.raise_for_status() 
r.json() 
相关问题