httpwebrespose没有收到pdf文件?

时间:2013-08-26 13:16:46

标签: c# httpwebresponse

接收和发送带签名的pdf文件的Web应用程序。我将httpwebrequest中的pdf文件发送到应用程序。但是没有收到带有httpwebresponse的pdf文件?

我的代码

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();
    }
}

1 个答案:

答案 0 :(得分:1)

您遇到的一个问题是:

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

每次循环读取缓冲区两次。您第一次读取的字节会丢失,因为您会覆盖它们。你的代码应该是:

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

另外:我不明白为什么要将PDF写入请求流。您是否尝试将PDF发送到服务器并让它发回相同的文件?

你到底想要做什么?