2013-08-05 37 views
2

因此,我有一個asp.net應用程序,它在GET請求上寫入一個字節數組,並且我試圖在C#應用程序中接收該字節數組。但是當我嘗試下載它時,我似乎只收到了標題。 (totalBuff)從asp.net返回一個字節數組並從C#應用程序下載它

我不是最好的解釋,但我希望代碼能讓它更清晰。

ASP.NET代碼:

var resp = new HttpResponseMessage(HttpStatusCode.OK); 
resp.Content = new StreamContent(new FileStream("D:\\Temp\\uLockStub.dll", FileMode.Open)); 
resp.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream"); 
return resp; 

C#代碼:

var httpReq = (HttpWebRequest) 
WebRequest.Create(string.Format("http://localhost:48976/login/login?user={0}&password={1}&hwid={2}", 
             username, Helper.GetMd5Hash(password), uid)); 
var resp = httpReq.GetResponse(); 
var data = resp.GetResponseStream(); 

var buff = new byte[1024]; 
var totalBuff = new List<byte>(); 
var read = 0; 

while ((read = data.Read(buff, 0, buff.Length)) > 0) 
    { 
     var tmpBuff = new byte[read]; 
     Buffer.BlockCopy(buff, 0, tmpBuff, 0, read); 
     totalBuff.AddRange(tmpBuff); 
    } 

我在做什麼錯?

在此先感謝!

+0

看看這篇文章http://www.codeproject.com/Articles/18034/HttpWebRequest-Response-in-a-Nutshell-Part-1 –

+0

感謝您的答覆克拉克,但我找到了一個簡單的解決方案問題的ASP.NET方面。當替換「var resp = new HttpResponseMessage(HttpStatusCode.OK); - > return resp;」部分只有「Response.BinaryWrite(...)」,C#端收到了所有的數據。 – UbbeLoL

+2

@ user2654057請將您的解決方案作爲您的問題的答案並接受,以便任何稍後發現此問題的人都能夠分辨出解決方案。 – Rafael

回答

1

解決:

更換

var resp = new HttpResponseMessage(HttpStatusCode.OK); 
resp.Content = new StreamContent(new FileStream("D:\\Temp\\uLockStub.dll", FileMode.Open)); 
resp.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream"); 
return resp; 

Response.BinaryWrite(System.IO.File.ReadAllBytes("D:\\Temp\\uLockStub.dll")); 

解決它。

+0

你應該接受你的答案(點擊左側的V;))http://stackoverflow.com/about – JoeBilly

+0

@JoeBilly謝謝。新來的。 :) – UbbeLoL

相關問題