2 // System.Web.Services.Protocols.WebClientProtocol.cs
\r
5 // Tim Coleman (tim@timcoleman.com)
\r
7 // Copyright (C) Tim Coleman, 2002
\r
10 using System.Collections.Specialized;
\r
11 using System.ComponentModel;
\r
14 using System.Threading;
\r
15 using System.Web.Services;
\r
17 namespace System.Web.Services.Protocols {
\r
18 public abstract class WebClientProtocol : Component {
\r
22 string connectionGroupName;
\r
23 ICredentials credentials;
\r
24 bool preAuthenticate;
\r
25 Encoding requestEncoding;
\r
29 static HybridDictionary cache;
\r
33 #region Constructors
\r
35 static WebClientProtocol ()
\r
37 cache = new HybridDictionary ();
\r
40 protected WebClientProtocol ()
\r
42 connectionGroupName = String.Empty;
\r
44 preAuthenticate = false;
\r
45 requestEncoding = null;
\r
51 #endregion // Constructors
\r
56 public string ConnectionGroupName {
\r
57 get { return connectionGroupName; }
\r
58 set { connectionGroupName = value; }
\r
61 public ICredentials Credentials {
\r
62 get { return credentials; }
\r
63 set { credentials = value; }
\r
66 [DefaultValue (false)]
\r
67 [WebServicesDescription ("Enables pre authentication of the request.")]
\r
68 public bool PreAuthenticate {
\r
69 get { return preAuthenticate; }
\r
70 set { preAuthenticate = value; }
\r
74 [RecommendedAsConfigurable (true)]
\r
75 [WebServicesDescription ("The encoding to use for requests.")]
\r
76 public Encoding RequestEncoding {
\r
77 get { return requestEncoding; }
\r
78 set { requestEncoding = value; }
\r
81 [DefaultValue (100000)]
\r
82 [RecommendedAsConfigurable (true)]
\r
83 [WebServicesDescription ("Sets the timeout in milliseconds to be used for synchronous calls. The default of -1 means infinite.")]
\r
84 public int Timeout {
\r
85 get { return timeout; }
\r
86 set { timeout = value; }
\r
90 [RecommendedAsConfigurable (true)]
\r
91 [WebServicesDescription ("The base URL to the server to use for requests.")]
\r
94 set { url = value; }
\r
97 #endregion // Properties
\r
101 public virtual void Abort ()
\r
106 protected static void AddToCache (Type type, object value)
\r
108 cache [type] = value;
\r
111 protected static object GetFromCache (Type type)
\r
113 return cache [type];
\r
116 protected virtual WebRequest GetWebRequest (Uri uri)
\r
118 return WebRequest.Create (uri);
\r
121 protected virtual WebResponse GetWebResponse (WebRequest request)
\r
124 throw new WebException ("The operation has been aborted.", WebExceptionStatus.RequestCanceled);
\r
125 return request.GetResponse ();
\r
128 protected virtual WebResponse GetWebResponse (WebRequest request, IAsyncResult result)
\r
131 throw new WebException ("The operation has been aborted.", WebExceptionStatus.RequestCanceled);
\r
133 IAsyncResult ar = request.BeginGetResponse (null, null);
\r
134 ar.AsyncWaitHandle.WaitOne ();
\r
135 return request.EndGetResponse (result);
\r
138 #endregion // Methods
\r