首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何订阅UPnP事件

如何订阅UPnP事件
EN

Stack Overflow用户
提问于 2013-10-25 01:05:08
回答 2查看 4.8K关注 0票数 4

对于大多数人来说,这应该是一个简单的HttpRequestMessage问题。我试图向UPnP设备发送订阅请求,如UPnP设备体系结构文档 4.1.2节所述,我需要发送的消息应该如下所示:

代码语言:javascript
复制
SUBSCRIBE publisher path HTTP/1.1
HOST: publisher host:publisher port  
USER-AGENT: OS/version UPnP/1.1 product/version  
CALLBACK: <delivery URL>  
NT: upnp:event  
TIMEOUT: Second-requested subscription duration 

很明显,这其中的大部分都是非常直接的。有几个项目我有问题,因为我目前的方法不起作用。我从服务器返回一个NotFound

请求行订阅发布者路径HTTP/1.1是否与创建WebRequest (WebRequest.Create(...))时相同,或者是否存在可以设置的属性?

在这种情况下,SUBSCRIBEHttpMethod还是GetPOSTPUT等等?

下面是当前的请求代码:

代码语言:javascript
复制
var request = WebRequest.Create(new Uri(eventUri)) as HttpWebRequest;

request.Method = "SUBSCRIBE";
request.UserAgent = "MyTab/1.0 UPnP/1.1 TestApp/1.0";
request.Headers["CALLBACK"] = "<" + hostname.DisplayName + ":8088>";
request.Headers["NT"] = "upnp:event";
request.Headers["TIMEOUT"] = "Second-300";
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-25 01:55:59

看起来这一切都是正确的,但我忘了将http://附加到回调url中。

票数 3
EN

Stack Overflow用户

发布于 2020-02-09 16:54:33

对于其他在这里登陆并想知道UPNP订阅是如何工作的人来说。这是一个非常简化的用法示例。

我将使用netcat打开一个端口,并使用HTTP 200响应传入的事件。要初始化连接,我将使用curl。这工作在一个Ubuntu19.10预装卷曲和nc。

代码语言:javascript
复制
curl -v http://192.168.1.47:58424/RenderingControl/evt -H "CALLBACK: <http://192.168.1.32:1234>" -H "NT: upnp:event" -H "TIMEOUT: Second-1800" -X SUBSCRIBE

这里,http://192.168.1.47:58424/RenderingControl/evt是要注册到事件的设备特定的URL。CALLBACK标头指定运行netcat服务器的端口和IP地址。如前所述,添加http://非常重要。

侦听和发送HTTP的服务器运行如下:

代码语言:javascript
复制
while true; do echo -e 'HTTP/1.1 200 OK\r\nContent-length: 0\r\nConnection: close\r\n\r\n' | nc -l 1234; done
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19579409

复制
相关文章

相似问题

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