首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Snapd的API需要什么样的消息?

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

Stack Overflow用户
提问于 2017-09-06 03:34:29
回答 2查看 53关注 0票数 0

Snapd有REST文档

我可以使用以下方法从C#连接到套接字

代码语言:javascript
复制
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停止--从来没有发送过回复。我怀疑我发出的信息有问题。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-09-06 15:56:06

结果是,它需要一个标准的HTTP请求,这意味着需要一个Host:行、一个Connection: Close行和两个\n

文件是下面的声明..。

虽然预期客户端可以通过TCP套接字使用HTTPS进行连接,但此时只支持UNIX套接字。

..。仅意味着HTTPS和TCP尚未工作- HTTP是当前有效的请求格式,即使在使用UNIX套接字时也是如此。

票数 0
EN

Stack Overflow用户

发布于 2017-09-06 20:43:15

我对C#一点也不熟悉,但也许这个python片段可以帮助我们找到一个解决方案:

代码语言:javascript
复制
import requests_unixsocket
session = requests_unixsocket.Session()
r = session.get('http+unix://%2Frun%2Fsnapd.socket/v2/snaps')
r.raise_for_status()
r.json()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46066367

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档