aboutsummaryrefslogtreecommitdiff
path: root/Mono.Nat/Upnp/Messages/UpnpMessage.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Mono.Nat/Upnp/Messages/UpnpMessage.cs')
-rw-r--r--Mono.Nat/Upnp/Messages/UpnpMessage.cs33
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);