[Webinar] Streamline your web hosting managementRegister Today

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 252
  • Last Modified:

HttpWebRequest doesnt work but WebClient does ?? Why??

I have a file on my server that produces a certain sha1 hashcode.
but when i download that same file using httpwebrequest the downloaded file has a different hashcode?

     HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(bu);
     HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();

but if I use the WEBCLIENT class instead i get the correct hashcode !!

so am i missing some specification info for the httpwebrequest object maybe?
i am using vs2005
i need to be able to use the httpwebrequest
0
joshuadavidlee
Asked:
joshuadavidlee
1 Solution
 
andrewjmearsCommented:
Use free Fiddler tool (HTTP Debugging Proxy) from Microsoft (http://www.fiddlertool.com/fiddler/) to see what might be different in the HTTP request/response. It might be an encoding issue and you may need to specify the encoding when you read the stream.
0
 
joshuadavidleeAuthor Commented:
this is what solved the problem for me:
i sent the response buffer into this method and it worked:

  # region ReadFully


        /// <param name="stream">The stream to read data from</param>
        /// <param name="initialLength">The initial buffer length</param>
        public byte[] ReadFully(Stream stream, int initialLength)
        {
            /* If we've been passed an unhelpful initial length, just
             use 32K. */
            if (initialLength < 1)
            {
                initialLength = 32768;
            }

            byte[] buffer = new byte[initialLength];
            int read = 0;

            int chunk;
            while ((chunk = stream.Read(buffer, read, buffer.Length - read)) > 0)
            {
                read += chunk;

                /* If we've reached the end of our buffer, check to see if there's
                 any more information */
                if (read == buffer.Length)
                {
                    int nextByte = stream.ReadByte();

                    /* End of stream? If so, we're done */
                    if (nextByte == -1)
                    {
                        return buffer;
                    }

                    /* Nope. Resize the buffer, put in the byte we've just
                     read, and continue */
                    byte[] newBuffer = new byte[buffer.Length * 2];
                    Array.Copy(buffer, newBuffer, buffer.Length);
                    newBuffer[read] = (byte)nextByte;
                    buffer = newBuffer;
                    read++;
                }
            }
            /* Buffer is now too big. Shrink it. */
            byte[] ret = new byte[read];
            Array.Copy(buffer, ret, read);
            return ret;
        }
        #endregion
0

Featured Post

Never miss a deadline with monday.com

The revolutionary project management tool is here!   Plan visually with a single glance and make sure your projects get done.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now