0

署名付きの 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();
    }
}
4

1 に答える 1

1

あなたが持っている1つの問題は、あなたの読書にあります:

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

ループを介して毎回2回バッファを読み取っています。最初に読み取ったバイトは上書きされるため失われます。コードは次のようになります。

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

また、PDFをリクエストストリームに書き込んでいる理由がわかりません。PDF をサーバーに送信して、同じファイルを返送しようとしていますか?

ここで何をしようとしているのですか?

于 2013-08-26T13:37:53.877 に答える