对于大多数人来说,这实际上应该是一个简单的HttpRequestMessage问题.我正在尝试按照UPnP Device Architecture doc的4.1.2节中所述向UPnP设备发送订阅请求,并且我需要发送的消息应该看起来像以下内容:
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.
请求行SUBSCRIBE发布者路径HTTP / 1.1是否与创建WebRequest(WebRequest.Create(…))时相同,或者是否可以设置属性?
在这种情况下,SUBSCRIBE是HttpMethod还是Get,POST,PUT等?
这是当前的请求代码:
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";
解决方法:
看起来一切都正确,除了我忘记将http://附加到回调URL之外.