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 OkHttpUtils() { okHttpClient = new OkHttpClient(); okHttpClient.SetConnectTimeout(10, TimeUnit.Seconds); okHttpClient.SetWriteTimeout(10, TimeUnit.Seconds); okHttpClient.SetReadTimeout(30, TimeUnit.Seconds); okHttpClient.SetCookieHandler(new CookieManager(null, CookiePolicy.AcceptOriginalServer)); }
public Communicator() { trustAllSslContext = SSLContext.GetInstance("SSL"); trustAllSslContext.Init(null, new ITrustManager[] { new CustomX509TrustManager() }, new SecureRandom()); client = new OkHttpClient(); client.SetConnectTimeout(5, Java.Util.Concurrent.TimeUnit.Seconds); client.SetSslSocketFactory(trustAllSslContext.SocketFactory); client.SetHostnameVerifier(new CustomHostNameVerifier()); client.SetProtocols(new Protocol[] { Protocol.Http11 }); StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().PermitAll().Build(); StrictMode.SetThreadPolicy(policy); }
FileUploadResponse MakeRequest(string url, string tag, MultipartBuilder requestBodyBuilder, IDictionary <string, string> headers = null) { //RequestBody requestBody = requestBodyBuilder.Build(); CountingRequestBody requestBody = new CountingRequestBody(requestBodyBuilder.Build(), 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(5, TimeUnit.Minutes); // connect timeout client.SetReadTimeout(5, TimeUnit.Minutes); // socket timeout Response response = client.NewCall(request).Execute(); var responseString = response.Body().String(); var code = response.Code(); var fileUploadResponse = new FileUploadResponse(responseString, code, tag); if (response.IsSuccessful) { FileUploadCompleted(this, fileUploadResponse); return(fileUploadResponse); } else { FileUploadError(this, fileUploadResponse); return(fileUploadResponse); } }
protected override async Task <HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) { if (Timeout != null) { var timeout = (long)TimeOut.Value.TotalMilliseconds; client.SetConnectTimeout(timeout, TimeUnit.Milliseconds); client.SetWriteTimeout(timeout, TimeUnit.Milliseconds); client.SetReadTimeout(timeout, TimeUnit.Milliseconds); } 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); }