Exemplo n.º 1
0
        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);
 }