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); } }
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) { } }
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); }
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); }