2013-08-26 27 views
0

接收和發送帶簽名的pdf文件的Web應用程序。我將httpwebrequest中的pdf文件發送給應用程序。但沒有收到與httpwebresponse的PDF文件?httpwebrespose沒有收到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(); 
    } 
} 
+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發送到服務器並讓它發回相同的文件?

你究竟想在這裏做什麼?

+0

我將PDF發送到PDF文檔簽名的請求流。但沒有得到相同的文件。 – Manik