1 public static string Post(Uri uri, Encoding encoding, string inputMimeType, NetworkCredential credentials, string input, int timeout)
2 {
3 return Post(uri, encoding, inputMimeType, credentials, input, timeout, null);
4 }
5
6 public static string PostAs(string sessionID, Uri uri, Encoding encoding, string inputMimeType, NetworkCredential credentials, string input, int timeout)
7 {
8 CookieCollection requestCookies = new CookieCollection();
9 requestCookies.Add(new Cookie(SessionManager.ASP_NET_SESSION_COOKIE, sessionID, "/", uri.Host));
10 return Post(uri, encoding, inputMimeType, credentials, input, timeout, requestCookies);
11 }
12
13 private static string Post(Uri uri, Encoding encoding, string inputMimeType, NetworkCredential credentials, string input, int timeout, CookieCollection requestCookies)
14 {
15 HttpWebRequest request;
16 HttpWebResponse response;
17 StringBuilder sb = new StringBuilder();
18 request = (HttpWebRequest)WebRequest.Create(uri);
19 request.Method = Form.POST;
20 request.ContentType = inputMimeType;
21 if (timeout == Timeout.Infinite || timeout > 0)
22 {
23 request.Timeout = timeout;
24 }
25 if (credentials != null)
26 {
27 CredentialCache credentialCache = new CredentialCache();
28 credentialCache.Add(uri, "Basic", credentials);
29 credentialCache.Add(uri, "NTLM", credentials);
30 credentialCache.Add(uri, "Digest", credentials);
31 request.Credentials = credentialCache;
32 }
33 if (requestCookies != null)
34 {
35 // add specified cookies to the new request
36 if (request.CookieContainer == null)
37 {
38 request.CookieContainer = new CookieContainer();
39 }
40 request.CookieContainer.Add(requestCookies);
41 }
42 byte[] inputBytes;
43 if (string.IsNullOrEmpty(input))
44 {
45 inputBytes = new byte[0];
46 }
47 else
48 {
49 inputBytes = encoding.GetBytes(input);
50 }
51 request.ContentLength = inputBytes.Length;
52 Stream requestStream = request.GetRequestStream();
53 requestStream.Write(inputBytes, 0, inputBytes.Length);
54 response = (HttpWebResponse) request.GetResponse();
55 requestStream.Close();
56 Stream responseStream = response.GetResponseStream();
57 StringWriter sw = new StringWriter(sb);
58 StreamReader sr = new StreamReader(responseStream, encoding);
59 Char[] read = new Char[256];
60 int count = sr.Read(read, 0, 256);
61 while (count > 0)
62 {
63 sw.Write(read, 0, count);
64 count = sr.Read(read, 0, 256);
65 }
66 return sb.ToString();
67 }
68