\r
protected override WebRequest GetWebRequest (Uri uri)\r
{\r
- return WebRequest.Create (uri);\r
+ WebRequest request = WebRequest.Create (uri);\r
+ request.Method = "POST";\r
+\r
+ return request;\r
}\r
\r
+ //\r
+ // Just for debugging\r
+ //\r
+ void DumpStackFrames ()\r
+ {\r
+ StackTrace st = new StackTrace ();\r
+\r
+ for (int i = 0; i < st.FrameCount; i++){\r
+ StackFrame sf = st.GetFrame (i);\r
+ Console.WriteLine ("At frame: {0} {1}", i, sf.GetMethod ().Name);\r
+ }\r
+ }\r
+ \r
//\r
// The `method_name' should be the name of our invoker, this is only used\r
// for sanity checks, nothing else\r
//\r
MethodInfo GetCallerMethod (string method_name)\r
{\r
- StackFrame stack_frame = new StackFrame (5, false);\r
- MethodInfo mi = (MethodInfo) stack_frame.GetMethod ();\r
+ MethodInfo mi;\r
+#if StackFrameWorks\r
+ StackFrame stack_trace = new StackFrame (5, false);\r
+ mi = (MethodInfo) stack_frame.GetMethod ();\r
\r
+#else\r
+ //\r
+ // Temporary hack: look for a type which is not this type\r
+ //\r
+ StackTrace st = new StackTrace ();\r
+ mi = null;\r
+ for (int i = 0; i < st.FrameCount; i++){\r
+ StackFrame sf = st.GetFrame (i);\r
+ mi = (MethodInfo) sf.GetMethod ();\r
+ if (mi.DeclaringType != typeof (SoapHttpClientProtocol))\r
+ break;\r
+ }\r
+#endif\r
//\r
// A few sanity checks, just in case the code moves around later\r
//\r
\r
SoapClientMessage message = new SoapClientMessage (\r
this, sma, new LogicalMethodInfo (mi), sma.OneWay, Url);\r
- \r
- return null;\r
+\r
+ return message;\r
}\r
\r
void SendMessage (WebRequest request, SoapClientMessage message)\r
{\r
+ WebHeaderCollection headers = request.Headers;\r
+ headers.Add ("SOAPAction", message.Action);\r
+\r
+ // create envelope\r
+ // create body\r
+ // serialize arguments\r
\r
}\r
\r
SoapClientMessage message = CreateMessage (method_name, parameters);\r
WebRequest request = GetWebRequest (uri);\r
Stream s = request.GetRequestStream ();\r
- \r
+\r
+\r
try {\r
SendMessage (request, message);\r
} finally {\r