Так як розповідати я не вмію, то відразу вивішую код з коментами ( з них думаю і так все зрозуміло).
/// <summary>
/// Класс для отправки запросов
/// </summary>
class HttpRequest {
private string URI = String.Empty;
private string _method = "POST";
/// <summary>
/// Дефолтный конструктор
/// </summary>
private HttpRequest() { }
/// <summary>
/// Конструктор
/// </summary>
/// <param name="uri">Ссылка для работы с веб-интерфесом</param>
public HttpRequest(string uri)
{ this.URI = uri;
}
/// <summary>
/// Конструктор
/// </summary>
/// <param name="uri">ССылка для работы с веб интерфесом</param>
/// <param name="method">метод (POST или GET)</param>
public HttpRequest(string uri, string method)
{
this.URI = uri; this._method = method; }
/// <summary> /// Шлем запрос в виде xml /// </summary> /// <param name="doc">ответ веб-интерфейса</param> /// <returns></returns>
public XmlDocument SendRequest(XmlDocument doc)
{ HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(this.URI);
// Разрешаем авторедирект httpWebRequest.AllowAutoRedirect = true;
// Создаем для запроса новый контейнер для хранения сессий httpWebRequest.CookieContainer = new CookieContainer();
// Следующие строки итак понятны
httpWebRequest.Method = this._method; httpWebRequest.ContentType = "application/x-www-form-urlencoded"; byte[] ByteQuery = System.Text.Encoding.ASCII.GetBytes(doc.OuterXml);
// Длинна запроса (обязательный параметр)
httpWebRequest.ContentLength = ByteQuery.Length;
// Открываем поток для записи
Stream QueryStream = httpWebRequest.GetRequestStream();
// Записываем в поток (это и есть POST запрос) QueryStream.Write(ByteQuery, 0, ByteQuery.Length);
// Закрываем поток QueryStream.Close();
// Объект с ответом сервера HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();
// Присваиваем сессию
httpWebResponse.Cookies = httpWebRequest.CookieContainer.GetCookies(httpWebRequest.RequestUri); // Открываем поток для чтения
Stream stream = httpWebResponse.GetResponseStream();
// Читаем из потока
StreamReader reader = new StreamReader(stream);
// Возвращаем результат запроса
XmlDocument document = new XmlDocument(); document.LoadXml(reader.ReadToEnd());
return document;
}
} * This source code was highlighted with Source Code Highlighter.
И еще один способ
/// <summary>
/// Посылает GET-запрос сервису и возвращает ответ в виде Xml документа.
/// </summary>
public XmlDocument SendRequest(string url)
{
XmlDocument xml = null;
MemoryStream stream = null;
WebClient client = null;
try
{
client = new WebClient();
byte[] respBytes = client.DownloadData(url);
stream = new MemoryStream(respBytes);
xml = new XmlDocument();
xml.Load(stream);
}
catch
{
throw new Exception("Ошибка при подключении!");
}
finally
{
if (stream != null)
{
stream.Dispose();
}
if (client != null)
{
client.Dispose();
}
}
return xml;
}
Комментариев нет:
Отправить комментарий