protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) { var java_uri = request.RequestUri.GetComponents(UriComponents.AbsoluteUri, UriFormat.UriEscaped); var url = new Java.Net.URL(java_uri); var body = default(RequestBody); if (request.Content != null) { var bytes = await request.Content.ReadAsByteArrayAsync().ConfigureAwait(false); body = RequestBody.Create(MediaType.Parse(request.Content.Headers.ContentType.MediaType), bytes); } var builder = new Request.Builder() .Method(request.Method.Method.ToUpperInvariant(), body) .Url(url); var keyValuePairs = request.Headers .Union(request.Content != null ? (IEnumerable<KeyValuePair<string, IEnumerable<string>>>)request.Content.Headers : Enumerable.Empty<KeyValuePair<string, IEnumerable<string>>>()); foreach (var kvp in keyValuePairs) builder.AddHeader(kvp.Key, String.Join(",", kvp.Value)); cancellationToken.ThrowIfCancellationRequested(); var rq = builder.Build(); var call = client.NewCall(rq); cancellationToken.Register(() => call.Cancel()); var resp = default(Response); try { resp = await call.EnqueueAsync().ConfigureAwait(false); } catch (IOException ex) { if (ex.Message.ToLowerInvariant().Contains("canceled")) { throw new OperationCanceledException(); } throw; } var respBody = resp.Body(); cancellationToken.ThrowIfCancellationRequested(); var ret = new HttpResponseMessage((HttpStatusCode)resp.Code()); if (respBody != null) { var content = new ProgressStreamContent(respBody.ByteStream(), cancellationToken); content.Progress = getAndRemoveCallbackFromRegister(request); ret.Content = content; } else { ret.Content = new ByteArrayContent(new byte[0]); } var respHeaders = resp.Headers(); foreach (var k in respHeaders.Names()) { ret.Headers.TryAddWithoutValidation(k, respHeaders.Get(k)); ret.Content.Headers.TryAddWithoutValidation(k, respHeaders.Get(k)); } return ret; }
string LoadAWOkHttpClientAsync(string urlText) { Response response = null; try { OkHttpClient clientOrg = new OkHttpClient(); OkHttpClient client = AWOkHttpClient.CopyWithDefaults(clientOrg, new AllowAllTrustManager()); Request request = new Request.Builder() .Url(urlText) .Build(); response = client.NewCall(request).Execute(); string responseCode = "Response Code: " + response.Code(); return(responseCode); } catch (IOException e) { return("IO Exception during network request"); } finally { if (response != null) { response.Body().Close(); } } }
private void getWeather(double latitude, double longitude) { string apiKey = "32b0b275eea19d641b0069e91c91b50a"; string apiUrl = "https://api.forecast.io/forecast/" + apiKey + "/" + latitude + "," + longitude; if (isNetworkAvailable()) { RunOnUiThread(() => toggleRefresh()); OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder().Url(apiUrl).Build(); Call call = client.NewCall(request); call.Enqueue(response => { RunOnUiThread(() => toggleRefresh()); var jsonData = JObject.Parse(response.Body().String()); mCurrentWeather = getCurrentDetails(jsonData); RunOnUiThread(() => updateDisplay()); }, (req, exception) => { ShowError(); }); } else { Toast.MakeText(this, "Network unavailable", ToastLength.Long).Show(); } }
public void Delete(string url, Action <ICall, Response> onResponse, Action <ICall, Java.IO.IOException> onFailure) { Request request = new Request.Builder().Url(url).Delete().Build(); okHttpClient.NewCall(request).Enqueue(onResponse, onFailure); okHttpClient.Dispose(); }
FileUploadResponse MakeRequest(string url, string tag, MultipartBuilder requestBodyBuilder, IDictionary <string, string> headers = null) { //RequestBody requestBody = requestBodyBuilder.Build(); CountingRequestBody requestBody = new CountingRequestBody(requestBodyBuilder.Build(), tag, this); var requestBuilder = new Request.Builder(); if (headers != null) { foreach (string key in headers.Keys) { if (!string.IsNullOrEmpty(headers[key])) { requestBuilder = requestBuilder.AddHeader(key, headers[key]); } } } Request request = requestBuilder .Url(url) .Post(requestBody) .Build(); OkHttpClient client = new OkHttpClient(); client.SetConnectTimeout(ConnectUploadTimeout, UploadTimeoutUnit); // connect timeout client.SetReadTimeout(SocketUploadTimeout, UploadTimeoutUnit); // socket timeout Response response = client.NewCall(request).Execute(); var responseString = response.Body().String(); var code = response.Code(); IDictionary <string, string> responseHeaders = new Dictionary <string, string>(); var rHeaders = response.Headers(); if (rHeaders != null) { var names = rHeaders.Names(); foreach (string name in names) { if (!string.IsNullOrEmpty(rHeaders.Get(name))) { responseHeaders.Add(name, rHeaders.Get(name)); } } } FileUploadResponse fileUploadResponse = new FileUploadResponse(responseString, code, tag, new ReadOnlyDictionary <string, string>(responseHeaders)); if (response.IsSuccessful) { FileUploadCompleted(this, fileUploadResponse); } else { FileUploadError(this, fileUploadResponse); } return(fileUploadResponse); }
public void login(Employee user, IAppObserver client) { if (!isInitialized) { initializeConnection(); this.isInitialized = true; } UserDTO udto = DTOUtils.getDTO(user); Request req = new Request.Builder().Type(RequestType.LOGIN).Data(udto).Build(); sendRequest(req); logger.Debug("PROXY CLIENT: login SENT REQUEST"); Response response = readResponse(); logger.Debug("PROXY CLIENT: login RECEIVED RESPONSE @"); if (response.Type() == ResponseType.OK) { this.client = client; logger.Debug("PROXY CLIENT: SUCCESSFUL login"); return; } if (response.Type() == ResponseType.ERROR) { String err = response.Data().ToString(); closeConnection(); logger.Debug("PROXY CLIENT: FAILED login"); throw new ServicesException(err); } }
public Show ticketsSold(Show show, Ticket t) { ShowDTO showDTO = DTOUtils.getDTO(show); TicketDTO ticketDTO = DTOUtils.getDTO(t); Object[] sendData = new Object[2]; sendData[0] = showDTO; sendData[1] = ticketDTO; Request req = new Request.Builder().Type(RequestType.TICKETS_SOLD).Data(sendData).Build(); sendRequest(req); logger.Debug("PROXY CLIENT: ticketsSold SENT REQUEST WARNING: THIS FUNCTION HAS NO RESPONSE!!!"); Response response = readResponse(); if (response.Type() == ResponseType.UPDATED_SHOWS) { logger.Debug("PROXY CLIENT: SUCCESSFUL update"); return(null); } if (response.Type() == ResponseType.ERROR) { String err = response.Data().ToString(); throw new ServicesException(err); } logger.Debug("PROXY CLIENT: SUCCESSFUL ticketsSold WARNING: THIS FUNCTION HAS NO RESPONSE!!!"); return(null); }
public Show[] findAllShows() { if (!isInitialized) { initializeConnection(); this.isInitialized = true; } Request req = new Request.Builder().Type(RequestType.GET_SHOWS).Build(); sendRequest(req); logger.Debug("PROXY CLIENT: findAllShow SENT REQUEST"); Response response = readResponse(); logger.Debug("PROXY CLIENT: findAllShow RECEIVED RESPONSE"); if (response.Type() == ResponseType.ERROR) { String err = response.Data().ToString(); logger.Debug("PROXY CLIENT: FAILED findAllSho"); throw new ServicesException(err); } ShowDTO[] showsDTOS = (ShowDTO[])response.Data(); Show[] shows = DTOUtils.getFromDTO(showsDTOS); logger.Debug("PROXY CLIENT: SUCCESSFUL findAllShow"); return(shows); }
//Android3.0 以后已经不允许在主线程访问网络,报错android.os.NetworkOnMainThreadException //获取网页内容 public async System.Threading.Tasks.Task <string> Get(string url) { //连接超时5秒 //写入数据超时5秒 //读取数据超时5秒 client = new OkHttpClient.Builder() .ConnectTimeout(5, TimeUnit.Seconds) .WriteTimeout(5, TimeUnit.Seconds) .ReadTimeout(5, TimeUnit.Seconds) .Build(); Request request = new Request.Builder().Url(url).Build(); Response response = await client.NewCall(request).ExecuteAsync(); if (response.Code() == 200) { //Toast.MakeText(this, "response.Code() == 200", ToastLength.Short).Show(); var content = response.Body().String(); return(content); } else { return("null"); } }
public async Task <string> Post(string url, string body, string authToken = null) { RequestBody requestBody = RequestBody.Create(JSON, body); Request request = new Request.Builder().Url(url).Post(requestBody).Build(); return(await SendRequest(request, authToken)); }
protected override void OnCreate(Bundle bundle) { base.OnCreate(bundle); // Set our view from the "main" layout resource SetContentView(Resource.Layout.Main); Button startTest = FindViewById<Button>(Resource.Id.startTest); ListView listView = FindViewById<ListView>(Resource.Id.listView); startTest.Click += delegate { ArrayAdapter<string> adapter = new ArrayAdapter<string>( this, Android.Resource.Layout.SimpleListItem1, Android.Resource.Id.Text1); listView.Adapter = adapter; OkHttpClient client = new OkHttpClient(); // Create request for remote resource. Request request = new Request.Builder() .Url(Endpoint) .Build(); // Execute the request and retrieve the response. WebSocketCall call = WebSocketCall.Create(client, request); WebSocketListener listener = call.Enqueue(); // attach handlers to the various events listener.Close += (sender, e) => { RunOnUiThread(() => adapter.Add(string.Format("{0}: {1}", e.Code, e.Reason))); }; listener.Failure += (sender, e) => { if (e.Exception != null) RunOnUiThread(() => adapter.Add(e.Exception.Message)); else RunOnUiThread(() => adapter.Add("Unknown Error!")); }; listener.Message += (sender, e) => { string payload = e.Payload.String(); e.Payload.Close(); RunOnUiThread(() => adapter.Add(string.Format("{0}\n{1}", payload, e.Payload.ContentType()))); }; listener.Open += (sender, e) => { RunOnUiThread(() => adapter.Add("Opened Web Socket.")); StartMessages(e.WebSocket); }; listener.Pong += (sender, e) => { string payload = e.Payload.ReadString(Charset.DefaultCharset()); e.Payload.Close(); RunOnUiThread(() => adapter.Add(payload)); }; }; }
public async Task <string> GetRequest(string url) { string result = null; var client = new OkHttpClient(); try { var request = new Request.Builder() .Url(url) .Build(); var response = await client.NewCall(request).ExecuteAsync(); var body = response.Body().String(); result = body; } catch (Exception ex) { _logService.LogException(ex); } return(result); }
public void Post(string url, string content, Action <ICall, Response> onResponse, Action <ICall, Java.IO.IOException> onFailure) { var body = RequestBody.Create(MediaType.Parse("text/plain"), Encoding.UTF8.GetBytes(content)); Request request = new Request.Builder().Url(url).Post(body).Build(); okHttpClient.NewCall(request).Enqueue(onResponse, onFailure); }
public static void sendOkHttpRequests(string address, Okhttp3.ICallback callbck) { var client = new OkHttpClient(); Okhttp3.Request requests = new Request.Builder().Url(address).Build(); requests.Url(); client.NewCall(requests).Enqueue(callbck); }
public void Run() { Request request = new Request.Builder() .Url(IdHostAdress + AccessPoint.Bssid) .AddHeader("Authorization", "Bearer " + _token) .Build(); client.NewCall(request).Enqueue(this); }
public async Task <string> GetAsyn(string url) { Request request = new Request.Builder() .Url(url) .Build(); Response response = await okHttpClient.NewCall(request).ExecuteAsync(); return(await response.Body().StringAsync()); }
public static void CreateRequest() { OkHttpClient okHttpClient = new OkHttpClient(); Request request = new Request.Builder() .Url(URL) .Post(RequestBody.Create(Square.OkHttp3.MediaType.Parse("text/x-markdown; charset=utf-8"), REQUESTBODY)) .Build(); OkHttp3Instrumentation.newCall(okHttpClient, request).Enqueue(new OnresponseOkHttpClient()); }
public async Task <bool> HeadAsyn(string url) { Request request = new Request.Builder().Url(url).Head().Build(); Response response = await okHttpClient.NewCall(request).ExecuteAsync(); var code = response.Code(); okHttpClient.Dispose(); return(code == (int)System.Net.HttpStatusCode.OK ? true : false); }
private void CallToken() { dialog.Show(); Request request = new Request.Builder() .Url("http://technobee.elementstore.ru/api/person/") .AddHeader("Authorization", "Bearer " + settings.Token) .Build(); client.NewCall(request).Enqueue(this); }
public void Post(string url, string basic, List <Param> param, Action <ICall, Response> onResponse, Action <ICall, Java.IO.IOException> onFailure) { FormBody.Builder builder = new FormBody.Builder(); foreach (var item in param) { builder.Add(item.Key, item.Value); } Request request = new Request.Builder().AddHeader("Authorization", basic).Url(url).Post(builder.Build()).Build(); okHttpClient.NewCall(request).Enqueue(onResponse, onFailure); }
public async Task <ResultMessage> GetAsyn(string url) { Request request = new Request.Builder().Url(url).Build(); Response response = await okHttpClient.NewCall(request).ExecuteAsync(); var body = await response.Body().StringAsync(); var code = response.Code(); switch (code) { case (int)System.Net.HttpStatusCode.OK: return(new ResultMessage() { IsError = false, Message = body }); case (int)System.Net.HttpStatusCode.NotFound: MobclickAgent.ReportError(Context, body); return(new ResultMessage() { IsError = true, Message = "404 NotFound" }); case (int)System.Net.HttpStatusCode.Unauthorized: MobclickAgent.ReportError(Context, body); return(new ResultMessage() { IsError = true, Message = "401 Unauthorized" }); case (int)System.Net.HttpStatusCode.InternalServerError: MobclickAgent.ReportError(Context, body); return(new ResultMessage() { IsError = true, Message = "500 InternalServerError" }); case (int)System.Net.HttpStatusCode.BadGateway: MobclickAgent.ReportError(Context, body); return(new ResultMessage() { IsError = true, Message = "502 BadGateway" }); default: MobclickAgent.ReportError(Context, body); return(new ResultMessage() { IsError = true, Message = "网络链接不可用 ,请稍后再试" }); } }
public void Patch(string url, List <Param> param, Action <ICall, Response> onResponse, Action <ICall, Java.IO.IOException> onFailure) { FormBody.Builder builder = new FormBody.Builder(); foreach (var item in param) { builder.Add(item.Key, item.Value); } var body = builder.Build(); Request request = new Request.Builder().Url(url).Patch(body).Build(); okHttpClient.NewCall(request).Enqueue(onResponse, onFailure); }
public void Post(string url, List <Param> param, Action <ICall, Response> onResponse, Action <ICall, Java.IO.IOException> onFailure) { FormBody.Builder builder = new FormBody.Builder(); foreach (var item in param) { builder.Add(item.Key, item.Value); } var body = builder.Build(); Request request = new Request.Builder().AddHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8").Url(url).Post(body).Build(); okHttpClient.NewCall(request).Enqueue(onResponse, onFailure); }
public void doTheThing(Action <List <Character> > characters) { try{ MD5 md5 = System.Security.Cryptography.MD5.Create(); DateTime Jan1st1970 = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); var timeStamp = (long)((DateTime.UtcNow - Jan1st1970).TotalMilliseconds); string api_key = "insert public key hear"; string private_key = "insert private key here"; byte[] inputBytes = System.Text.Encoding.ASCII.GetBytes(timeStamp + private_key + api_key); byte[] hash = md5.ComputeHash(inputBytes); // step 2, convert byte array to hex string StringBuilder sb = new StringBuilder(); for (int i = 0; i < hash.Length; i++) { sb.Append(hash[i].ToString("X2")); } var thing = sb.ToString().ToLower(); ; var url = new URL("https://gateway.marvel.com:443/v1/public/characters?apikey=550bdabffb29d3cc2bf6813a68021ee4&hash=" + thing + "&ts=" + timeStamp + "&limit=10");//+ "&format=json"); //var uriBuilder = new UriBuilder(); //uriBuilder.Scheme = "https"; //uriBuilder.Host = "gateway.marvel.com"; //uriBuilder.Path = "v1/public/characters"; //uriBuilder.Query = "apikey=550bdabffb29d3cc2bf6813a68021ee4"; //uriBuilder. OkHttpClient client = new OkHttpClient(); Request request = new Request .Builder() .Url(url) .Build(); Response response = client.NewCall(request).Execute(); var body = response.Body().String().Replace('\"', '"'); var x = Newtonsoft.Json.JsonConvert.DeserializeObject <RootObject>(body); var things = x.data.results; characters(things); } catch (Exception e) { Console.WriteLine(e.ToString()); } }
public async Task <Tuple <Boolean, String> > ResolveClusterUrlAsync(String clusterUrl) { OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .Url(clusterUrl) .Build(); Response response = await client.NewCall(request).ExecuteAsync(); String server = await response.Body().StringAsync(); return(new Tuple <bool, String>(response.IsSuccessful, server)); }
public async System.Threading.Tasks.Task <byte[]> Get(string url) { Request request = new Request.Builder().Url(url).Build(); Response response = await httpClient.NewCall(request).ExecuteAsync(); if (response.Code() == 200) { var stream = response.Body().ByteStream(); var bytes = StreamToBytes(stream); return(bytes); } return(null); }
private async Task Init() { var cameraStatus = await Permissions.RequestAsync <Permissions.Camera>(); var micStatus = await Permissions.RequestAsync <Permissions.Microphone>(); _webRtcClient = new WebRtcClient(this, _remoteView, _localView, this); var dialogTcs = new TaskCompletionSource <string>(); var linearLayout = new LinearLayout(this); linearLayout.Orientation = Orientation.Vertical; linearLayout.SetPadding(48, 24, 48, 24); var ipAddr = new EditText(this) { Hint = "IP Address", Text = "192.168.1.119" }; var port = new EditText(this) { Hint = "Port", Text = "8080" }; linearLayout.AddView(ipAddr); linearLayout.AddView(port); var alert = new AlertDialog.Builder(this) .SetTitle("Socket Address") .SetView(linearLayout) .SetPositiveButton("OK", (sender, args) => { dialogTcs.TrySetResult($"ws://{ipAddr.Text}:{port.Text}"); }) .Create(); alert.Show(); var wsUrl = await dialogTcs.Task; var okHttpClient = new OkHttpClient.Builder() .ReadTimeout(0, Java.Util.Concurrent.TimeUnit.Milliseconds) .Build(); var request = new Request.Builder() .Url(wsUrl) .Build(); _socket = okHttpClient.NewWebSocket( request, new WebSocketObserver(ReadMessage)); }
private async void MakeHttpCall() { #if __ANDROID__ var client = new OkHttpClient(); var requestBody = RequestBody.Create( MediaType.Parse("application/json"), "{\"title\":\"foo\",\"body\": \"bar\", \"userId\":\"1\", \"id\":\"1\"}"); var request = new Request.Builder() .Url("https://jsonplaceholder.typicode.com/posts") .Post(requestBody) .Build(); var response = await client.NewCall(request).ExecuteAsync(); #endif }
protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); // Set our view from the "main" layout resource SetContentView(Resource.Layout.Main); //var vm = new MainViewModel(); Button button = FindViewById <Button>(Resource.Id.myButton); button.Click += async delegate { // The easiest way to pin a host is turn on pinning with a broken configuration and read the expected configuration when the connection fails. // Be sure to do this on a trusted network, and without man -in-the - middle tools like Charles or Fiddler. var hostname = "reqres.in"; var certificatePinner = new Square.OkHttp3.CertificatePinner.Builder() .Add(hostname, "sha256/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=") .Build(); var client = new OkHttpClient.Builder() .CertificatePinner(certificatePinner) .Build(); var request = new Request.Builder() .Url("https://" + hostname) .Build(); var call = client.NewCall(request); var response = await call.ExecuteAsync(); // As expected, this fails with a certificate pinning exception: /*Certificate pinning failure! * Peer certificate chain: * sha256/CZEvkurQ3diX6pndH4Z5/dUNzK1Gm6+n8Hdx/DQgjO0=: CN=sni96286.cloudflaressl.com,OU=PositiveSSL Multi-Domain,OU=Domain Control Validated * sha256/x9SZw6TwIqfmvrLZ/kz1o0Ossjmn728BnBKpUFqGNVM=: CN=COMODO ECC Domain Validation Secure Server CA 2,O=COMODO CA Limited,L=Salford,ST=Greater Manchester,C=GB * sha256/58qRu/uxh4gFezqAcERupSkRYBlBAvfcw7mEjGPLnNU=: CN=COMODO ECC Certification Authority,O=COMODO CA Limited,L=Salford,ST=Greater Manchester,C=GB * Pinned certificates for reqres.in: * sha256/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=*/ // Follow up by pasting the public key hashes from the exception into the NativeMessageHandler certificate pinner's configuration. //await vm.Get(); }; }
public Response GetWalkingRoutePlanningResult(LatLng latLng1, LatLng latLng2, bool needEncode) { string key = mDefaultKey; if (needEncode) { try { key = Java.Net.URLEncoder.Encode(mDefaultKey, "UTF-8"); } catch (Java.IO.UnsupportedEncodingException e) { e.PrintStackTrace(); } } string url = mWalkingRoutePlanningURL + "?key=" + key; Response response = null; JSONObject origin = new JSONObject(); JSONObject destination = new JSONObject(); JSONObject json = new JSONObject(); try { origin.Put("lat", latLng1.Latitude); origin.Put("lng", latLng1.Longitude); destination.Put("lat", latLng2.Latitude); destination.Put("lng", latLng2.Longitude); json.Put("origin", origin); json.Put("destination", destination); RequestBody requestBody = RequestBody.Create(JSON, json.ToString()); Request request = new Request.Builder().Url(url).Post(requestBody).Build(); response = GetNetClient().InitOkHttpClient().NewCall(request).Execute(); } catch (JSONException e) { e.PrintStackTrace(); } catch (IOException e) { e.PrintStackTrace(); } return(response); }
public override void OnCreate() { base.OnCreate(); userId = JwtHelper.GetAspNetUserId(UserSettings.Token); dbWriter = new SignalsDBWriter(this); timer = new Timer { Interval = 30000, Enabled = true }; timer.Elapsed += (s, e) => { Logger.Info("trying to sent telemetry..."); var type = MediaType.Parse("application/json; charset=utf-8"); var telemetry = dbWriter.ReadTelemetry(userId, out ids); if (telemetry?.Count > 0) { var str = Newtonsoft.Json.JsonConvert.SerializeObject(telemetry, new Trigger.Classes.TelemetryJsonConverter()); var body = RequestBody.Create(type, str); OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .Url(Url) .Header("scn-dev-msg", "") .Post(body) .Build(); Callback c = new Callback { Writer = dbWriter, Ids = ids }; var all_signals = telemetry.SelectMany(b => b.Select(i => i)).ToList(); Logger.Info("Send Telemetry: " + all_signals.Count.ToString()); client.NewCall(request).Enqueue(c); } else { Logger.Info("No signals to send"); } }; }
private async Task <HttpResponseMessage> HttpGet(string url) { var client = new OkHttpClient(); client.SetHostnameVerifier(new HostnameVerifier()); client.SetSslSocketFactory(GetSocketFactory()); var builder = new Request.Builder() .Method("GET", null) .Url(url) .CacheControl(new CacheControl.Builder().NoCache().Build()) .AddHeader("User-Agent", "Test/1.0"); var rq = builder.Build(); var call = client.NewCall(rq); System.Diagnostics.Debug.WriteLine("Sending Call..."); var resp = await call.EnqueueAsync().ConfigureAwait(false); System.Diagnostics.Debug.WriteLine("Got response"); var respBody = resp.Body(); var ret = new HttpResponseMessage((HttpStatusCode)resp.Code()); ret.ReasonPhrase = resp.Message(); if (respBody != null) { ret.Content = new StreamContent(respBody.ByteStream()); } else { ret.Content = new ByteArrayContent(new byte[0]); } var respHeaders = resp.Headers(); foreach (var k in respHeaders.Names()) { ret.Headers.TryAddWithoutValidation(k, respHeaders.Get(k)); ret.Content.Headers.TryAddWithoutValidation(k, respHeaders.Get(k)); } return(ret); }
protected override void OnCreate(Bundle bundle) { base.OnCreate(bundle); // Set our view from the "main" layout resource SetContentView(Resource.Layout.Main); Button download = FindViewById<Button>(Resource.Id.download); ListView listView = FindViewById<ListView>(Resource.Id.listView); download.Click += async delegate { OkHttpClient client = new OkHttpClient(); // Create request for remote resource. Request request = new Request.Builder() .Url(Endpoint) .Build(); // Execute the request and retrieve the response. Response response = await client.NewCall(request).ExecuteAsync(); // Deserialize HTTP response to concrete type. string body = await response.Body().StringAsync(); List<Contributor> contributors = JsonConvert.DeserializeObject<List<Contributor>>(body); // Sort list by the most contributions. List<string> data = contributors .OrderByDescending(c => c.contributions) .Select(c => string.Format("{0} ({1})", c.login, c.contributions)) .ToList(); // Output list of contributors. IListAdapter adapter = new ArrayAdapter<string>( this, Android.Resource.Layout.SimpleListItem1, Android.Resource.Id.Text1, data); listView.Adapter = adapter; }; }
/// <exception cref="IOException">This method might throw this exception.</exception> protected override Stream GetStreamFromNetwork(string imageUri, Java.Lang.Object extra) { Request request = new Request.Builder().Url(imageUri).Build(); return client.NewCall(request).Execute().Body().ByteStream(); }
protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) { var java_uri = request.RequestUri.GetComponents(UriComponents.AbsoluteUri, UriFormat.UriEscaped); var url = new Java.Net.URL(java_uri); var body = default(RequestBody); if (request.Content != null) { var bytes = await request.Content.ReadAsByteArrayAsync().ConfigureAwait(false); var contentType = "text/plain"; if (request.Content.Headers.ContentType != null) { contentType = String.Join(" ", request.Content.Headers.GetValues("Content-Type")); } body = RequestBody.Create(MediaType.Parse(contentType), bytes); } var builder = new Request.Builder() .Method(request.Method.Method.ToUpperInvariant(), body) .Url(url); if (DisableCaching) { builder.CacheControl(noCacheCacheControl); } var keyValuePairs = request.Headers .Union(request.Content != null ? (IEnumerable<KeyValuePair<string, IEnumerable<string>>>)request.Content.Headers : Enumerable.Empty<KeyValuePair<string, IEnumerable<string>>>()); foreach (var kvp in keyValuePairs) builder.AddHeader(kvp.Key, String.Join(getHeaderSeparator(kvp.Key), kvp.Value)); cancellationToken.ThrowIfCancellationRequested(); var rq = builder.Build(); var call = client.NewCall(rq); // NB: Even closing a socket must be done off the UI thread. Cray! cancellationToken.Register(() => Task.Run(() => call.Cancel())); var resp = default(Response); try { resp = await call.EnqueueAsync().ConfigureAwait(false); var newReq = resp.Request(); var newUri = newReq == null ? null : newReq.Uri(); request.RequestUri = new Uri(newUri.ToString()); if (throwOnCaptiveNetwork && newUri != null) { if (url.Host != newUri.Host) { throw new CaptiveNetworkException(new Uri(java_uri), new Uri(newUri.ToString())); } } } catch (IOException ex) { if (ex.Message.ToLowerInvariant().Contains("canceled")) { throw new OperationCanceledException(); } throw; } var respBody = resp.Body(); cancellationToken.ThrowIfCancellationRequested(); var ret = new HttpResponseMessage((HttpStatusCode)resp.Code()); ret.RequestMessage = request; ret.ReasonPhrase = resp.Message(); if (respBody != null) { var content = new ProgressStreamContent(respBody.ByteStream(), CancellationToken.None); content.Progress = getAndRemoveCallbackFromRegister(request); ret.Content = content; } else { ret.Content = new ByteArrayContent(new byte[0]); } var respHeaders = resp.Headers(); foreach (var k in respHeaders.Names()) { ret.Headers.TryAddWithoutValidation(k, respHeaders.Get(k)); ret.Content.Headers.TryAddWithoutValidation(k, respHeaders.Get(k)); } return ret; }
private void getWeather(double latitude, double longitude) { string apiKey = "32b0b275eea19d641b0069e91c91b50a"; string apiUrl = "https://api.forecast.io/forecast/" + apiKey + "/" + latitude + "," + longitude; if (isNetworkAvailable ()) { RunOnUiThread(() => toggleRefresh()); OkHttpClient client = new OkHttpClient (); Request request = new Request.Builder ().Url (apiUrl).Build (); Call call = client.NewCall (request); call.Enqueue (response => { RunOnUiThread(() => toggleRefresh()); var jsonData = JObject.Parse (response.Body ().String ()); mCurrentWeather = getCurrentDetails (jsonData); RunOnUiThread(() => updateDisplay()); }, (req, exception) => { ShowError (); }); } else { Toast.MakeText (this, "Network unavailable", ToastLength.Long).Show (); } }