как считать поток запроса httpWebRequest в c#, я добрался, ошибка “поток не читаема”?

Я хочу считать поток запроса из пользовательского HttpWebRequest класс, который наследовался HttpWebRequest и я попытался считать поток запроса на различных этапах, но все еще не уверенный, как достигнуть этого в классе.

Это пользовательское HttpWebRequest используется для сериализации сообщения мыла, и я хочу знать, какой запрос был отправлен в формате строки. Я также реализовал пользовательский HttpRequestCreator, HttpWebResponse но все еще не может найти место/этап, из которого я могу считать поток запроса.

Если я произвел все в a MemoryStream затем скопируйте содержание для запроса потока, кто-либо знает, какой этап я могу сделать это? В конструкторе, BeginGetRequestStream, EndGetRequestStream или GetRequestStream?

11
задан remio 14 November 2013 в 07:55
поделиться

3 ответа

Почему бы не передать функцию ссылку на массив списка файлов?

my @list = <*.txt>;
ProcessFiles(\@list);

sub ProcessFiles {
    my $list_ref = shift;
    for my $file ( @{$list_ref} ) {
        print "$file\n";
    }
}
-121--4746260-

Не знаете, возможно ли это в более общем плане, но это если у вас есть собственный пользовательский MEYnnotationView.

Мне удалось адаптировать подход, задокументированный в http://spitzkoff.com/craig/?p=108 Крейгом Спицкоффом:

  1. Предоставьте пользовательскую MEYnnotationView ссылку на объект MEYnnotation
  2. Добавьте метод (а) к объекту MIAnnotation и вызову при необходимости изменения местоположения аннотации
  3. Вызов regionChanged на пользовательском MEYnnotationView, чтобы сообщить ему, когда для изменения положения (например, когда Обновление MEYnnotation координаты)
  4. На чертеже Rect на внутренний объект представления, принадлежащий настраиваемое представление MEYnnotationView изменить положение с помощью координат MIAnnotation (вы держите ссылка на него).

Этот подход, скорее всего, можно упростить еще больше - при любых обстоятельствах может не потребоваться внутренний объект представления.

-121--1264671-

Ваш вопрос неясен.

Если вы пытаетесь прочитать « запрос запрос » после того, как в поток записан другой код (запрос POST), это невозможно. (Поток посылается непосредственно на сервер и не сохраняется в памяти)

Вместо этого вам необходимо открыть собственный MemureStream, а затем записать его в поток просить, который вы готовы отправить.

10
ответ дан 3 December 2019 в 06:46
поделиться

Сообщение "поток не читается" будет результатом, если есть код возврата ошибки, например 404, 503, 401 и так далее. Скорее всего, вы не проверили свой код состояния.

Что-то вроде этого работает, если содержимое - текст:

public string DownloadString(string uri, out int status)
{
    string result= null;
    status = 0;
    HttpWebResponse response= null;
    try
    {
        HttpWebRequest request = (HttpWebRequest) HttpWebRequest.Create(uri);
        // augment the request here: headers (Referer, User-Agent, etc)
        //     CookieContainer, Accept, etc.
        response= (HttpWebResponse) request.GetResponse();
        Encoding responseEncoding = Encoding.GetEncoding(response.CharacterSet);
        using (StreamReader sr = new StreamReader(response.GetResponseStream(), responseEncoding))
        {
            result = sr.ReadToEnd();
        }
        status = (int) response.StatusCode;
    }
    catch (WebException wexc1)
    {
        // any statusCode other than 200 gets caught here
        if(wexc1.Status == WebExceptionStatus.ProtocolError)
        {
            // can also get the decription: 
            //  ((HttpWebResponse)wexc1.Response).StatusDescription;
            status = (int) ((HttpWebResponse)wexc1.Response).StatusCode;
        }
    }
    finally
    {
        if (response!= null)
            response.Close();
    }
    return result;
}
13
ответ дан 3 December 2019 в 06:46
поделиться

Попробуйте использовать Fiddler . Работал у меня.

Fiddler:

  • - это прокси-сервер веб-отладки.
  • регистрирует весь HTTP (S) трафик между вашим компьютером и Интернетом.
  • позволяет вам проверять весь HTTP (S) трафик, устанавливать точки останова и «скрипт» with data
  • является бесплатным
  • может отлаживать трафик почти всех приложений (веб-браузеры и др.)
-5
ответ дан 3 December 2019 в 06:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: