public override void OnStatusChange(GDHttpRequest httpRequest) { var state = httpRequest.GetState; switch (state) { case GDHttpRequestState.GDHttpRequestOpened: //Request opened so now send httpRequest.Send(); break; case GDHttpRequestState.GDHttpRequestDone: //check status int status = httpRequest.GetStatus; if (status == 200) { //the request has finished so see if we have any data var buf = httpRequest.GetReceiveBuffer; var len = buf.BytesUnread; var rawData = new char[len]; //Marshal space for the buffer that will be used by the Good SDK var dataPtr = new HandleRef(this, Marshal.StringToHGlobalAnsi(new string (rawData))); buf.Read(dataPtr.Handle, len); //rawData = System.Runtime.InteropServices.Marshal.PtrToStringAnsi(dataPtr.Handle).ToCharArray(); //Transform into a NSData object var data = NSData.FromBytes(dataPtr.Handle, (nuint)len); if (data.Length > 0) { ParseData(data); } //Must clean up memory manually for Mashalled data or it will stick around forever Marshal.FreeHGlobal(dataPtr.Handle); } break; } UIApplication.SharedApplication.NetworkActivityIndicatorVisible = false; }
public FeedDownloader(IList <NewsItem> items) { _httpRequest = new GDHttpRequest(); _httpRequest.Delegate = new CustomGDHttpRequestDelegate(items); }