Snapd 的 API 需要什么样的消息?



snapd在REST 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-从未发送响应。我怀疑我发送的消息有问题。

事实证明,它期望标准的HTTP请求,这意味着Host:行,Connection: Close线和 twe twe the en teens需要 n s。

文档的以下索赔...

虽然预计允许客户在TCP插座上使用HTTPS连接,但此时仅支持一个Unix插座。

...只是意味着HTTP s tcp 尚不正常使用Unix插座时。

我根本不流利c#,但也许这个python片段可以帮助引导进入解决方案:

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

最新更新