Я хочу считать поток запроса из пользовательского HttpWebRequest
класс, который наследовался HttpWebRequest
и я попытался считать поток запроса на различных этапах, но все еще не уверенный, как достигнуть этого в классе.
Это пользовательское HttpWebRequest
используется для сериализации сообщения мыла, и я хочу знать, какой запрос был отправлен в формате строки. Я также реализовал пользовательский HttpRequestCreator
, HttpWebResponse
но все еще не может найти место/этап, из которого я могу считать поток запроса.
Если я произвел все в a MemoryStream
затем скопируйте содержание для запроса потока, кто-либо знает, какой этап я могу сделать это? В конструкторе, BeginGetRequestStream
, EndGetRequestStream
или GetRequestStream
?
Почему бы не передать функцию ссылку на массив списка файлов?
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 Крейгом Спицкоффом:
Этот подход, скорее всего, можно упростить еще больше - при любых обстоятельствах может не потребоваться внутренний объект представления.
-121--1264671-Ваш вопрос неясен.
Если вы пытаетесь прочитать «
запрос запрос » после того, как в поток записан другой код (запрос POST), это невозможно. (Поток посылается непосредственно на сервер и не сохраняется в памяти)
Вместо этого вам необходимо открыть собственный MemureStream, а затем записать его в поток просить, который вы готовы отправить.
Сообщение "поток не читается" будет результатом, если есть код возврата ошибки, например 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;
}
Попробуйте использовать Fiddler . Работал у меня.
Fiddler: