Manik
Manik

Reputation: 1

httpwebrespose does not receive pdf file?

A web application that receive and send a pdf file with signature. I send pdf file in httpwebrequest to the application. But not receive that pdf file with httpwebresponse ?

My code

byte[] pdfFile = File.ReadAllBytes("c:\\sample.pdf");

WebRequest request = WebRequest.Create("URL");
request.Credentials = new NetworkCredential("Username", "Password");
request.Proxy.Credentials = new NetworkCredential("Username", "Password");
request.Method = "POST";
request.ContentLength = pdfFile.Length;
request.ContentType = "application/pdf";

Stream stream = request.GetRequestStream();
stream.Write(pdfFile, 0, pdfFile.Length);
stream.Close();


WebResponse resp = request.GetResponse();
var buffer = new byte[4096];
MemoryStream memoryStream = new MemoryStream();
Stream responseStream =resp.GetResponseStream();

{
    int count;
    do
    {
        count = responseStream.Read(buffer, 0, buffer.Length);
         memoryStream.Write
    (buffer, 0, responseStream.Read(buffer, 0,  buffer.Length));
    } while (count != 0);
}
resp.Close();
byte[] memoryBuffer = memoryStream.ToArray();
System.IO.File.WriteAllBytes(@"c:\sample1.txt", memoryBuffer);
int s = memoryBuffer.Length;

BinaryWriter binaryWriter = 
new BinaryWriter(File.Open(@"c:\sample2.txt", FileMode.Create));
binaryWriter.Write(memoryBuffer);
binaryWriter.Close();


//Read Fully is :

public static byte[] ReadFully(Stream input)
{
    using (MemoryStream ms = new MemoryStream())
    {
        input.CopyTo(ms);
        return ms.ToArray();
    }
}

Upvotes: 0

Views: 261

Answers (1)

Jim Mischel
Jim Mischel

Reputation: 134125

One problem you have is in your reading:

int count;
do
{
    count = responseStream.Read(buffer, 0, buffer.Length);
    memoryStream.Write(buffer, 0, responseStream.Read(buffer, 0,  buffer.Length));
} while (count != 0);

You're reading the buffer twice each time through the loop. The bytes you read the first time are lost because you overwrite them. Your code should be:

int count;
do
{
    count = responseStream.Read(buffer, 0, buffer.Length);
    memoryStream.Write(buffer, 0, count);
} while (count != 0);

Also: I don't understand why you're writing the PDF to the request stream. Are you trying to send the PDF to a server and have it send the same file back?

What, exactly, are you trying to do here?

Upvotes: 1

Related Questions