Exemple #1
0
        public static async Task <NSData> LoadPageSource(string URL, string Type)
        {
            var session = NSUrlSession.SharedSession;

            // TODO convert to straight .NET
            NSUrl target = NSUrl.FromString(URL);
            NSMutableUrlRequest request = new NSMutableUrlRequest(target);

            request.HttpMethod      = "GET";
            request["Content-Type"] = Type ?? "text/html";

            var TaskRequest = session.CreateDataTaskAsync(request, out Task);

            Task.Resume();

            var taskResponse = await TaskRequest;

            if (taskResponse == null || taskResponse.Response == null)
            {
                Console.WriteLine(Task.Error);
                return(null);
            }
            else
            {
                return(taskResponse.Data);
            }
        }
Exemple #2
0
        public async void SetupCell(MovieViewModel Movie)
        {
            Data?.Cancel();
            Data = null;

            if (!Created)
            {
                CreateComponents();
            }

            ImageView.Image  = null;
            TitleLabel.Text  = Movie.Title;
            Genres.Text      = Movie.Genres;
            ReleaseDate.Text = Movie.ReleaseDate;

            var Request = NSUrlSession.SharedSession.CreateDataTaskAsync(new NSUrl(Movie.Poster), out Data);

            Data.Resume();

            try
            {
                var Response = await Request;

                if (Response != null && Response.Data != null)
                {
                    var Image = new UIImage(Response.Data);
                    DispatchQueue.MainQueue.DispatchAsync(() =>
                    {
                        ImageView.Image = Image;
                        CurrentImage    = Image;
                    });
                }
            }
            catch (Exception) { }
        }
Exemple #3
0
        public void Search(string searchText, EventHandler handler)
        {
            NSUrl url = GetUrl(searchText);
            NSUrlSessionDataTask dataTask = session.CreateDataTask(url, (data, response, error) =>
            {
                NSError er;
                NSDictionary dict = (NSDictionary)NSJsonSerialization.Deserialize(data, NSJsonReadingOptions.AllowFragments, out er);

                string status = dict["stat"].ToString();
                Console.WriteLine("stat = " + dict["stat"]);
                NSArray arr = (NSArray)((NSDictionary)dict["photos"])["photo"];
                List <FlickrPhoto> photosList = new List <FlickrPhoto>();
                for (nuint i = 0; i < arr.Count; i++)
                {
                    //Console.WriteLine(arr.GetItem<NSDictionary>(i));
                    NSDictionary elemt = arr.GetItem <NSDictionary>(i);
                    FlickrPhoto photo  = new FlickrPhoto(elemt["id"].ToString(), elemt["farm"].ToString(), elemt["server"].ToString(), elemt["secret"].ToString(), elemt["title"].ToString());
                    photosList.Add(photo);
                }
                //Console.WriteLine("photos = " + ((NSDictionary)dict["photos"])["photo"]);
                var arg        = new PhotosDounloadEventArg();
                arg.PhotosList = photosList;
                //FinishHandler(this, arg);
                handler(this, arg);

                Console.WriteLine("dict = " + dict);
                Console.WriteLine("data = " + data);
                Console.WriteLine("error = " + error);
            });

            dataTask.Resume();
        }
 /// <summary>
 /// Establece conexion con el servidor para obtener los datos.
 /// </summary>
 /// <param name="uri">URI.</param>
 /// <param name="complete">Action conexion finalizada.</param>
 private void Connection(URIData uri, Action <bool, string> complete)
 {
     using (NSUrlSession session = NSUrlSession.FromConfiguration(NSUrlSessionConfiguration.DefaultSessionConfiguration, (INSUrlSessionDelegate) new DataDelegate(complete), null))
     {
         NSUrlSessionDataTask task = session.CreateDataTask(CreateRequest(uri));
         task.Resume();
     }
 }
        partial void SendNetworkReqClickedAsync(NSObject sender)
        {
            NSUrl                url     = new NSUrl("https://developer.huawei.com");
            NSUrlSession         session = NSUrlSession.SharedSession;
            NSUrlSessionDataTask task    = session.CreateDataTask(url, completionHandler);

            task.Resume();
        }
            public override void DidReceiveResponse(NSUrlSession session, NSUrlSessionDataTask dataTask, NSUrlResponse response, Action <NSUrlSessionResponseDisposition> completionHandler)
            {
                var inflight = GetInflightData(dataTask);

                try
                {
                    var urlResponse = (NSHttpUrlResponse)response;
                    var status      = (int)urlResponse.StatusCode;

                    var content = new NSUrlSessionDataTaskStreamContent(inflight.Stream, () =>
                    {
                        inflight.Disposed = true;
                        inflight.Stream.TrySetException(new ObjectDisposedException("The content stream was disposed."));

                        sessionHandler.RemoveInflightData(dataTask);
                    });

                    // NB: The double cast is because of a Xamarin compiler bug
                    var httpResponse = new HttpResponseMessage((HttpStatusCode)status)
                    {
                        Content        = content,
                        RequestMessage = inflight.Request
                    };
                    httpResponse.RequestMessage.RequestUri = new Uri(urlResponse.Url.AbsoluteString);

                    foreach (var v in urlResponse.AllHeaderFields)
                    {
                        // NB: Cocoa trolling us so hard by giving us back dummy dictionary entries
                        if (v.Key == null || v.Value == null)
                        {
                            continue;
                        }

                        httpResponse.Headers.TryAddWithoutValidation(v.Key.ToString(), v.Value.ToString());
                        httpResponse.Content.Headers.TryAddWithoutValidation(v.Key.ToString(), v.Value.ToString());
                    }

                    inflight.Response = httpResponse;

                    // We don't want to send the response back to the task just yet.  Because we want to mimic .NET behavior
                    // as much as possible.  When the response is sent back in .NET, the content stream is ready to read or the
                    // request has completed, because of this we want to send back the response in DidReceiveData or DidCompleteWithError
                    if (dataTask.State == NSUrlSessionTaskState.Suspended)
                    {
                        dataTask.Resume();
                    }
                }
                catch (Exception ex)
                {
                    inflight.CompletionSource.TrySetException(ex);
                    inflight.Stream.TrySetException(ex);

                    sessionHandler.RemoveInflightData(dataTask);
                }

                completionHandler(NSUrlSessionResponseDisposition.Allow);
            }
        private void PubliceRequestMethod(NSMutableUrlRequest request)
        {
            NSError err;
            // 设置header
            NSMutableDictionary header = new NSMutableDictionary();

            header.SetValueForKey((NSString)"application/json; charset=utf-8", (NSString)"Content-Type");
            request.Headers = header;

            NSUrlSession session = NSUrlSession.FromConfiguration(NSUrlSessionConfiguration.DefaultSessionConfiguration, (INSUrlSessionDelegate)this, NSOperationQueue.CurrentQueue);

            NSUrlSessionDataTask task = session.CreateDataTask(request, (data, response, error) =>
            {
                if (error != null)
                {
                    Console.WriteLine(error.Description);
                }
                else
                {
                    NSHttpUrlResponse resp = (NSHttpUrlResponse)response;
                    NSDictionary dicData   = (NSDictionary)NSJsonSerialization.Deserialize(data, NSJsonReadingOptions.MutableLeaves, out err);
                    if (dicData == null)
                    {
                        return;
                    }
                    NSObject code = dicData.ValueForKey((NSString)"code");
                    if (resp.StatusCode == 200 && code.ToString().Equals("0"))
                    {
                        NetworkHelperRDelegate(dicData, resp, null);
                        Console.WriteLine(resp.Description);
                    }
                    else
                    {
                        NetworkHelperRDelegate(dicData, resp, err);
                        string message = dicData.ValueForKey((NSString)"message").ToString();
                        Console.WriteLine(dicData.Description);
                    }
                }
            });

            task.Resume();
        }
        void NSUrlSessionButton_TouchUpInside(object sender, EventArgs args)
        {
            NSUrlSessionConfiguration sessionConfig = NSUrlSessionConfiguration.DefaultSessionConfiguration;

            sessionConfig.AllowsCellularAccess          = true;
            sessionConfig.TimeoutIntervalForRequest     = 30.0;
            sessionConfig.TimeoutIntervalForResource    = 60.0;
            sessionConfig.HttpMaximumConnectionsPerHost = 1;

            NSUrl url = NSUrl.FromString(URLRequestBin);
            NSMutableUrlRequest urlRequest = new NSMutableUrlRequest(url, NSUrlRequestCachePolicy.ReloadIgnoringLocalCacheData, 60.0);

            urlRequest.HttpMethod = "POST";
            urlRequest.Body       = NSData.FromString("data=This is some NSURLSession data");

            NSUrlSession         session  = NSUrlSession.FromConfiguration(sessionConfig);
            NSUrlSessionDataTask dataTask = session.CreateDataTask(urlRequest);

            dataTask.Resume();
        }
        private MPMediaItemArtwork GetImageFromUrl(string url)
        {
            UIImage              image    = null;
            NSUrlSession         session  = NSUrlSession.SharedSession;
            NSUrlSessionDataTask dataTask = session.CreateDataTask(new NSUrlRequest(new NSUrl(url)),
                                                                   (data, response, error) =>
            {
                if (response != null)
                {
                    image = GetImageFromUrl(data);
                }
            });

            dataTask.Resume();

            if (image != null)
            {
                return(new MPMediaItemArtwork(image));
            }
            return(null);
        }
Exemple #10
0
        public override UITableViewCell GetCell(UITableView tableView, NSIndexPath indexPath)
        {
            PhotosSearchCell cell = (PhotosSearchCell)tableView.DequeueReusableCell(cellIdentifier, indexPath);
            var photo             = PhotosList[indexPath.Row];

            cell.TitleLabel.Text = photo.Title;
            cell.ImgView.Image   = null;
            if (photo.LargeImage != null)
            {
                cell.ImgView.Image = photo.LargeImage;
            }
            else
            {
                NSUrlSessionDataTask task = NSUrlSession.SharedSession.CreateDataTask(photo.FlickrImageUrl(), (data, response, error) =>
                {
                    if (data != null)
                    {
                        UIImage image = UIImage.LoadFromData(data);
                        if (image != null)
                        {
                            photo.LargeImage = image;
                            InvokeOnMainThread(() =>
                            {
                                PhotosSearchCell updateCell = (PhotosSearchCell)tableView.DequeueReusableCell(cellIdentifier, indexPath);
                                if (updateCell != null)
                                {
                                    updateCell.ImgView.Image = image;
                                    List <NSIndexPath> ips   = new List <NSIndexPath>();
                                    ips.Add(indexPath);
                                    tableView.ReloadRows(ips.ToArray(), UITableViewRowAnimation.None);
                                }
                            });
                        }
                    }
                });
                task.Resume();
            }

            return(cell);
        }