**** Merged from MCS ****
[mono-project.git] / mcs / class / Microsoft.Web.Services / Microsoft.Web.Services / WebServicesClientProtocol.cs
blob27ca039971895dd0e39cccf5a0e7707c7daa1d73
1 //
2 // WebServicesClientProtocol.cs: Web Services Client Protocol
3 //
4 // Author:
5 // Sebastien Pouliot (spouliot@motus.com)
6 //
7 // (C) 2003 Motus Technologies Inc. (http://www.motus.com)
8 //
10 using System;
11 using System.Net;
12 using System.Web.Services.Protocols;
14 namespace Microsoft.Web.Services {
16 public class WebServicesClientProtocol : SoapHttpClientProtocol {
18 private Pipeline _pipeline;
19 private SoapContext _requestContext;
20 private SoapContext _responseContext;
22 public WebServicesClientProtocol () {}
24 public Pipeline Pipeline {
25 get {
26 if (_pipeline == null)
27 _pipeline = new Pipeline ();
28 return _pipeline;
30 set {
31 if (value == null)
32 throw new System.ArgumentNullException ("value");
33 _pipeline = value;
37 public SoapContext RequestSoapContext {
38 get {
39 if (_requestContext == null)
40 _requestContext = new SoapContext ();
41 return _requestContext;
45 public SoapContext ResponseSoapContext {
46 get {
47 if (_responseContext == null)
48 _responseContext = new SoapContext ();
49 return _responseContext;
53 [MonoTODO("something is missing")]
54 public new string Url {
55 get { return base.Url; }
56 set { base.Url = value; }
59 protected override WebRequest GetWebRequest (Uri uri)
61 SoapWebRequest request = new SoapWebRequest (uri);
62 RequestSoapContext.CopyTo (request.SoapContext);
63 request.Pipeline = Pipeline;
64 return request;
67 protected override WebResponse GetWebResponse (WebRequest request)
69 WebResponse response = request.GetResponse ();
70 //response.SoapContext.CopyTo (ResponseSoapContext);
71 return response;
74 [MonoTODO("do not support IAsyncResult")]
75 protected override WebResponse GetWebResponse (WebRequest request, IAsyncResult result)
77 SoapWebResponse response = (SoapWebResponse) request.GetResponse ();
78 response.SoapContext.CopyTo (ResponseSoapContext);
79 return response;