Я хочу прочитать необработанный двоичный файл PNG-файла на веб-сайте и сохранить его в байте [], пока у меня есть что-то вроде этого:
Uri imageUri = new Uri("http://www.example.com/image.png");
// Create a HttpWebrequest object to the desired URL.
HttpWebRequest imgRequest = (HttpWebRequest)WebRequest.Create(imageUri);
using (HttpWebResponse imgResponse = (HttpWebResponse)imgRequest.GetResponse())
{
using (BinaryReader lxBR = new BinaryReader(imgResponse.GetResponseStream()))
{
using (MemoryStream lxMS = new MemoryStream())
{
lnBuffer = lxBR.ReadBytes(1024);
while (lnBuffer.Length > 0)
{
lxMS.Write(lnBuffer, 0, lnBuffer.Length);
lnBuffer = lxBR.ReadBytes(1024);
}
lnFile = new byte[(int)lxMS.Length];
lxMS.Position = 0;
lxMS.Read(lnFile, 0, lnFile.Length);
}
}
}
, но я не могу использовать GetResponse
в Silverlight, потому что он не асинхронный (я думаю, что причина), поэтому вместо этого я должен использовать BeginGetResponse
, но я не совсем понимаю, как это сделать. Это то, что я до сих пор:
HttpWebResponse imgResponse = (HttpWebResponse)imgRequest.BeginGetResponse(new AsyncCallback(WebComplete), imgRequest);
using (imgResponse)
{
using (BinaryReader lxBR = new BinaryReader(imgResponse.GetResponseStream()))
{
/*Same*/
}
}
и
void WebComplete(IAsyncResult a)
{
HttpWebRequest req = (HttpWebRequest)a.AsyncState;
HttpWebResponse res = (HttpWebResponse)req.EndGetResponse(a);
//...? Do I need something else here?
}
Может кто-нибудь немного объяснить мне, как использовать свойство BeginGetResponse
и как я могу использовать AsyncCallback.
Спасибо!
Примечание:
Я новичок в Silverlight, и я следил за учебниками и заимствовал из других ответов здесь, на StackOverflow:
(ответ на stackoverflow), что мне нужно делать, но не в silverlight
учебник
WebRequest_in_Silverlight
это действительный код Silverlight?
HttpWebResponse imgResponse = (HttpWebResponse)imgRequest.BeginGetResponse(new AsyncCallback(WebComplete), imgRequest);