Solved

System.Net.HttpWebRequest.Create(url), something simular.

Posted on 2003-11-11
6
2,096 Views
Last Modified: 2012-05-04
Ok, what I which to acheive is to send my page to an email everytime a person views it.

The emailing part is ok, but how can I save the response.outputstream of my aspx page into a string, once it has run?

Yea it's an odd question I know.

I have this code, which does this from another page but I want to get the stuff from the page that is running.

private String readHtmlPage(string url)
{
                String result;
                System.Net.WebResponse objResponse;
     System.Net.WebRequest objRequest = System.Net.HttpWebRequest.Create(url);
     objResponse = objRequest.GetResponse();
     using (System.IO.StreamReader sr =  new System.IO.StreamReader(objResponse.GetResponseStream()) )
     {
          result = sr.ReadToEnd();
          // Close and clean up the StreamReader
          sr.Close();
     }
     return result;
}
0
Comment
Question by:iqula
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
  • 3
6 Comments
 
LVL 28

Expert Comment

by:mmarinov
ID: 9730546
0
 

Author Comment

by:iqula
ID: 9730720
Thanks, but this appends to the output stream, what I need is the output stream as a string, or am I missing something here :)
0
 
LVL 28

Accepted Solution

by:
mmarinov earned 300 total points
ID: 9730804
you can see here how you can resolve the problem
http://support.microsoft.com/default.aspx?scid=kb;en-us;810205

you can get the whole code :-) and Response.Filter = new ResponseFilter(Response.Filter); not in Init like it is described but in the Application_BeginRequest in global.asax file.

B..G
0
Online Training Solution

Drastically shorten your training time with WalkMe's advanced online training solution that Guides your trainees to action. Forget about retraining and skyrocket knowledge retention rates.

 

Author Comment

by:iqula
ID: 9731503
This looks very promising, how can I get the string instead of writinf to a file?
0
 
LVL 28

Expert Comment

by:mmarinov
ID: 9731761
you can use this code in overriden void Close()

sr = new StreamReader(@"C:\FilterOutput\response.htm");
s = sr.ReadToEnd();
sr.Close();

and after that to send s to static variable in your class

so every time you submit a page at the end of the request you will send the content of this file and when you enter again in the PageLoad you can get it

B..G
0
 

Author Comment

by:iqula
ID: 9732314
I'm not sure how you chaps know this stuff, but I'm really impressed :)

Here is my solution: Thanks

      public class EmailThisPage :Stream
      {
            //Call from an aspx page within the OnInit(EventArgs e), like this
            //------------------------------------------------------------------
            //tools.EmailThisPage ep = new tools.EmailThisPage(Response.Filter);
            //ep.From="name@domain.com";
            //ep.To="name@domain.com";
            //ep.Subject="A page email";
            //ep.SmtpServer="localhost";
            //Response.Filter = ep;
            //------------------------------------------------------------------
            private Stream m_sink;
            private long m_position;
            public string From, To, Cc, Bcc, Subject, SmtpServer;
            public Exception error;

            public EmailThisPage(Stream sink)//Response.Filter
            {
                  m_sink = sink;
            }

            // The following members of Stream must be overriden.
            public override bool CanRead
            {get { return true; }}

            public override bool CanSeek
            {get { return false; }}

            public override bool CanWrite
            {get { return false; }}

            public override long Length
            {get { return 0; }}

            public override long Position
            {
                  get { return m_position; }
                  set { m_position = value; }
            }

            public override long Seek(long offset, System.IO.SeekOrigin direction)
            {
                  return 0;
            }

            public override void SetLength(long length)
            {
                  m_sink.SetLength(length);
            }

            public override void Close()
            {
                  m_sink.Close();
            }

            public override void Flush()
            {
                  m_sink.Flush();
            }

            public override int Read(byte[] buffer, int offset, int count)
            {
                  return m_sink.Read(buffer, offset, count);
            }

            // Override the Write method to filter Response to a file.
            public override void Write(byte[] buffer, int offset, int count)
            {            
                  string body;
                  //Write out the response to the browser.
                  m_sink.Write(buffer, 0, count);
         
                  body=System.Convert.ToBase64String(buffer, 0, buffer.Length);

                  System.Text.UTF8Encoding objUTF8 =new System.Text.UTF8Encoding();
                  body= objUTF8.GetString(Convert.FromBase64String(body));
                  //Write out the response to the string.
                  try
                  {

                        MailMessage Mailer = new MailMessage();
                        SmtpMail.SmtpServer = SmtpServer;
                        Mailer.From = From;
                        Mailer.To = To;
                        Mailer.Cc = Cc;
                        Mailer.Bcc = Bcc;
                        Mailer.Subject = Subject;
                        Mailer.Body =body;


                        Mailer.BodyFormat = System.Web.Mail.MailFormat.Html;
                        SmtpMail.Send(Mailer);
                  }
                  catch
                  {
                        MailMessage Mailer = new MailMessage();
                        SmtpMail.SmtpServer = SmtpServer;
                        Mailer.From = From;
                        Mailer.Cc = Cc;
                        Mailer.Bcc = Bcc;
                        Mailer.Body =body;
                        Mailer.BodyFormat = System.Web.Mail.MailFormat.Html;
                        Mailer.To =      System.Configuration.ConfigurationSettings.AppSettings["erroremail"];
                        Mailer.Subject = "Email Error (To:)" + To + " (Subject:)" + Subject;
                        SmtpMail.Send(Mailer);
                  }
            }
      }
0

Featured Post

Salesforce Has Never Been Easier

Improve and reinforce salesforce training & adoption using WalkMe's digital adoption platform. Start saving on costly employee training by creating fast intuitive Walk-Thrus for Salesforce. Claim your Free Account Now

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

This document covers how to connect to SQL Server and browse its contents.  It is meant for those new to Visual Studio and/or working with Microsoft SQL Server.  It is not a guide to building SQL Server database connections in your code.  This is mo…
Real-time is more about the business, not the technology. In day-to-day life, to make real-time decisions like buying or investing, business needs the latest information(e.g. Gold Rate/Stock Rate). Unlike traditional days, you need not wait for a fe…
If you’ve ever visited a web page and noticed a cool font that you really liked the look of, but couldn’t figure out which font it was so that you could use it for your own work, then this video is for you! In this Micro Tutorial, you'll learn yo…
Sometimes it takes a new vantage point, apart from our everyday security practices, to truly see our Active Directory (AD) vulnerabilities. We get used to implementing the same techniques and checking the same areas for a breach. This pattern can re…

624 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question