2013-08-26 2 views
0

서명이 포함 된 pdf 파일을주고받는 웹 응용 프로그램입니다. 나는 응용 프로그램에 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