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 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); }
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) { string url = request.RequestUri.ToString(); var okRequest = new Request.Builder(); okRequest.Url(url); RequestBody requestBody = null; foreach (var header in request.Headers) { okRequest.AddHeader(header.Key, string.Join(" ", header.Value)); } if (request.Content != null) { /*foreach (var header in request.Content.Headers) * { * okRequest.AddHeader(header.Key, string.Join(" ", header.Value)); * }*/ var contentType = MediaType.Parse(request.Content.Headers.ContentType?.ToString() ?? "application/octat-stream"); using (var ms = new System.IO.MemoryStream()) { var s = await request.Content.ReadAsStreamAsync().ConfigureAwait(false); await s.CopyToAsync(ms).ConfigureAwait(false); requestBody = RequestBody.Create(contentType, ms.ToArray()); } } okRequest.Method(request.Method.ToString(), requestBody); string cookie = GetCookie(url); if (cookie != null) { okRequest.AddHeader("Cookie", cookie); } var call = Client.NewCall(okRequest.Build()); var callBack = new OkHttpCallBack(); call.Enqueue(callBack); var okResponse = await callBack.taskSource.Task.ConfigureAwait(false); var response = new HttpResponseMessage(); response.StatusCode = (System.Net.HttpStatusCode)okResponse.Code(); List <KeyValuePair <string, string> > contentHeaders = new List <KeyValuePair <string, string> >(); var rhs = response.Headers; var hs = okResponse.Headers(); int total = hs.Size(); for (int i = 0; i < total; i++) { var name = hs.Name(i); var value = hs.Value(i); if (name.EqualsIgnoreCase("Set-Cookie") || name.EqualsIgnoreCase("Set-Cookie2")) { Android.Webkit.CookieManager.Instance.SetCookie(url, value); PrefCookieHandler.Default.SetCookie(url, value); cookieCache.Clear(); } //System.Diagnostics.Debug.Write($"Header: {name} = {value}"); if (!rhs.TryAddWithoutValidation(name, value)) { contentHeaders.Add(new KeyValuePair <string, string>(name, value)); } } var st = okResponse.Body().ByteStream(); response.Content = new StreamContent(st); foreach (var ch in contentHeaders) { response.Content.Headers.TryAddWithoutValidation(ch.Key, ch.Value); } //HttpResponseMessage return(response); }
public async Task <T> Invoke <T>(INetActionConfig action) { try { using (var requestBuilder = new Request.Builder()) { if (_netService.Config.HasCredentials) { requestBuilder.AddHeader("Authentication", Credentials.Basic(_netService.Config.UserName, _netService.Config.Password ?? "")); } requestBuilder.Url(GetUri(action)); if (action.Payload != null) { requestBuilder.Post( GetBody(action)); } using (var request = requestBuilder.Build()) { using (var clientBuilder = new OkHttpClient.Builder()) { // Setup Client here using (var client = clientBuilder.Build()) { using (var response = await client.NewCall(request).ExecuteAsync().ConfigureAwait(false) ) { if (!response.IsSuccessful) { throw new Exception($"Error: code:{response.Code()}, msg:{response.Message()}"); } using (var contentType = response.Body().ContentType()) { _logger.Info(contentType); if (contentType.Type().EndsWith("xml")) { var body = await response.Body().StringAsync(); return(Deserialize <T>(body)); } if (contentType.Type().EndsWith("json")) { return(JsonConvert.DeserializeObject <T>( await response.Body().StringAsync())); } } } } } } } } catch (Exception e) { _logger.Error(e); } return(default(T)); }