[C#] Обработка исключений

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by SimBa, 11 Dec 2011.

  1. SimBa

    SimBa Member

    Joined:
    8 Dec 2008
    Messages:
    0
    Likes Received:
    47
    Reputations:
    -11
    Создаю запрос на сайт
    PHP:
    HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("site.ru");
    request.Method "POST";
    Записываю отправляемые данные:
    PHP:
    byte[] requestByte Encoding.GetEncoding(1251).GetBytes(zapros);
    request.ContentLength requestByte.Length;
    Stream send request.GetRequestStream();
    send.Write(requestByte0requestByte.Length);
    Читаю полученные данные:
    PHP:
    HttpWebResponse response = (HttpWebResponse)request.GetResponse();
    StreamReader reader = new StreamReader(response.GetResponseStream());
    Выскакивает исключение:
    Необработанное исключение:
    PHP:
    System.Net.ProtocolViolationExceptionПеред вызовом 
    [Begin]GetResponse необходимо записать ContentLength байт в поток запроса.

    В чем проблема? подскажите пожалуйста
     
  2. W!z@rD

    W!z@rD Борец за русский язык

    Joined:
    12 Feb 2006
    Messages:
    973
    Likes Received:
    290
    Reputations:
    43
    public string SendPost(string postData)
    {
    var httpWebRequest = (HttpWebRequest)WebRequest.Create("http://site.com");
    httpWebRequest.Method = "POST";
    httpWebRequest.ContentType = "application/x-www-form-urlencoded";
    var buffer = Encoding.ASCII.GetBytes(postData);
    httpWebRequest.ContentLength = buffer.Length;
    using (var writer = httpWebRequest.GetRequestStream())
    {
    writer.Write(buffer, 0, buffer.Length);
    }
    using (var httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse())
    {
    using (var stream = httpWebResponse.GetResponseStream())
    {
    using (var reader = new StreamReader(stream, Encoding.GetEncoding(httpWebResponse.CharacterSet)))
    {
    return reader.ReadToEnd();
    }
    }
    }
    }