diff options
Diffstat (limited to 'Mono.Nat/Upnp/Messages/UpnpMessage.cs')
| -rw-r--r-- | Mono.Nat/Upnp/Messages/UpnpMessage.cs | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/Mono.Nat/Upnp/Messages/UpnpMessage.cs b/Mono.Nat/Upnp/Messages/UpnpMessage.cs index 44c16eec6..11e446277 100644 --- a/Mono.Nat/Upnp/Messages/UpnpMessage.cs +++ b/Mono.Nat/Upnp/Messages/UpnpMessage.cs @@ -31,6 +31,7 @@ using System.Net; using System.IO; using System.Text; using System.Globalization; +using MediaBrowser.Common.Net; namespace Mono.Nat.Upnp { @@ -71,6 +72,32 @@ namespace Mono.Nat.Upnp return req; } + protected HttpRequestOptions CreateRequest(string upnpMethod, string methodParameters) + { + string ss = "http://" + this.device.HostEndPoint.ToString() + this.device.ControlUrl; + NatUtility.Log("Initiating request to: {0}", ss); + + var req = new HttpRequestOptions(); + req.Url = ss; + req.EnableKeepAlive = false; + req.RequestContentType = "text/xml; charset=\"utf-8\""; + req.RequestHeaders.Add("SOAPACTION", "\"" + device.ServiceType + "#" + upnpMethod + "\""); + + string bodyString = "<s:Envelope " + + "xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\" " + + "s:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\">" + + "<s:Body>" + + "<u:" + upnpMethod + " " + + "xmlns:u=\"" + device.ServiceType + "\">" + + methodParameters + + "</u:" + upnpMethod + ">" + + "</s:Body>" + + "</s:Envelope>\r\n\r\n"; + + req.RequestContentBytes = System.Text.Encoding.UTF8.GetBytes(bodyString); + return req; + } + public static MessageBase Decode(UpnpNatDevice device, string message) { XmlNode node; @@ -113,8 +140,14 @@ namespace Mono.Nat.Upnp return null; } + public abstract HttpRequestOptions Encode(); public abstract WebRequest Encode(out byte[] body); + public virtual string Method + { + get { return "POST"; } + } + internal static void WriteFullElement(XmlWriter writer, string element, string value) { writer.WriteStartElement(element); |
