okhttp 相关问题

适用于Android和Java应用程序的HTTP + HTTP / 2客户端。

将值从 okhttp-eventsource BackgroundEventHandler 传递到主线程

我正在尝试使用 okhttp-eventsource lib 来处理我的 Android 应用程序中的服务发送事件,但我不知道如何将从 onMessage() 方法收到的值传递到我的主线程。 这我...

回答 1 投票 0

如何在收到响应后关闭http客户端连接?

我正在使用http客户端发送请求。我想确保在收到响应后关闭连接。 代码: 公共类 WebserviceCall 扩展 AsyncTask 我正在使用http客户端发送请求。我想确保在收到响应后关闭连接。 代码: public class WebserviceCall extends AsyncTask<Void,Void,String> { // interface for response AsyncResponse delegate; private final MediaType URLENCODE = MediaType.parse("application/json;charset=utf-8"); ProgressDialog dialog; Context context; String dialogMessage; boolean showDialog = true; String URL; String jsonBody; private OkHttpClient client; public WebserviceCall(Context context, String URL, String jsonRequestBody, String dialogMessage, boolean showDialog, AsyncResponse delegate){ this.context = context; this.URL = URL; this.jsonBody = jsonRequestBody; this.dialogMessage = dialogMessage; this.showDialog = showDialog; this.delegate = delegate; } @Override protected void onPreExecute() { super.onPreExecute(); if(Utils.isNetworkAvailable(context)) { if (showDialog) { /*dialog = new ProgressDialog(context); dialog.setMessage(dialogMessage); dialog.show();*/ } } else { Utils.showDialog(context, context.getString(R.string.networkWarning)); } } @Override protected String doInBackground(Void... params) { // creating okhttp client client = new OkHttpClient(); // client.setConnectTimeout(10L, TimeUnit.SECONDS); // creating request body RequestBody body; if(jsonBody != null) { body = RequestBody.create(URLENCODE, jsonBody); }else{ body = null; }; // creating request Request request = new Request.Builder() .post(body) .url(URL) .build(); // creating webserivce call and get response try { Response response = client.newCall(request).execute(); String res = response.body().string(); Log.d("myapp", res); return res; } catch (IOException e) { e.printStackTrace(); // Toast.makeText(context,"could not connect to server",Toast.LENGTH_LONG).show(); } return null; } @Override protected void onPostExecute(String s) { super.onPostExecute(s); try { /*if ((dialog != null) && showDialog) { dialog.dismiss(); }*/ } catch (final IllegalArgumentException e) { // Handle or log or ignore } catch (final Exception e) { // Handle or log or ignore } finally { dialog = null; } if (s != null) { delegate.onCallback(s); } else { Log.d("myapp",getClass().getSimpleName()+": response null"); } } } 这里是请求url的代码。收到响应后如何关闭此连接? 我在客户端对象上搜索断开或关闭方法,但没有这样的方法可用。 有人可以帮忙吗? 谢谢你。 持有的线程和连接如果保持空闲,将会自动释放。但如果您正在编写需要积极释放未使用资源的应用程序,您可以这样做。 使用 shutdown() 关闭调度程序的执行器服务。这也会导致以后对客户端的呼叫被拒绝。 client.dispatcher().executorService().shutdown(); 使用evictAll()清除连接池。请注意,连接池的守护线程可能不会立即退出。 client.connectionPool().evictAll(); 如果您的客户端有缓存,请调用 close()。请注意,针对已关闭的缓存创建调用是错误的,这样做会导致调用崩溃。 client.cache().close(); 您可以在下面的链接中了解更多详细信息 https://square.github.io/okhttp/3.x/okhttp/okhttp3/OkHttpClient.html “调用response.body().close()将释放响应所持有的所有资源。连接池将使连接保持打开状态,但如果未使用,则会在超时后自动关闭。” 在这里回答了。 response.body().close(); client.dispatcher().executorService().shutdown(); client.connectionPool().evictAll(); 在最后工作时添加这些行!

回答 3 投票 0

如何在JUnit测试中将MockWebServer端口设置为WebClient?

我将 spring-boot 与 WebClient 一起使用,它作为 bean 自动装配。 问题:在编写junit集成测试时,我必须使用okhttp MockWebServer。这个模拟总是在随机端口上启动,...

回答 3 投票 0

我可以向一个 Retrofit 实例添加多少个 Retrofit 拦截器?

我的面试问题之一是: 我可以向 Retrofit 实例添加的拦截器的最大数量是多少? 我花了一分钟思考,如果我要创建这样一个库,为什么我要限制 n...

回答 1 投票 0

okHttp 客户端在添加 callTimeout() 配置后超时,并且有时请求无法到达主机

将 callTimeout() 配置添加到 okhttp 客户端后,我开始超时 引起原因:java.io.InterruptedIOException:超时 引起原因:java.io.IOException:已取消 OkHttpClient httpClient...

回答 3 投票 0

向 Codeassist 应用程序添加库有困难

我一直在寻找将 OkHttp 或任何其他库添加到 codeassist 应用程序的方法。我确实希望有一个解决方案? 谷歌搜索,询问我所在地区有经验的程序员。我真的...

回答 1 投票 0

安卓。自动更新 accessToken,并在屏幕上显示更新请求的响应数据

我需要一个方法,如果服务器返回错误表明accessToken已过期,则使用refreshToken刷新accessToken。它应该发送一个新请求(旧请求的副本......

回答 1 投票 0

MockWebServer 响应延迟 - 测试超时

我正在尝试使用 MockWebServer 测试 HTTP 超时场景,该服务器响应使用 Retrofit/OkHttp 发送的测试请求。 (这个问题几年前就被问过,但当时涉及...

回答 4 投票 0

使用 OkHTTP 和 Kotlin 实现 POST 请求中的空正文

我正在尝试在 Kotlin 项目中使用 OkHTTP 发出 POST 请求。但是,请求正文最终为空。 这是我尝试的代码片段: 导入 java.util.* 导入 android.os.

回答 1 投票 0

通过Retrofit上传文件到服务器失败

我正在尝试通过改造将文件上传到服务器。在邮递员中我成功收到了 api 响应。 但是当我在项目中调用 api 时,api 调用失败。 改造方法: @多部分 @PO...

回答 1 投票 0

无法将 OkHttp 客户端添加到 Apollo 客户端(Apollo-kotin 版本 3)

我无法将我的 Okhttp 客户端附加到 Apollo 客户端。我无法在 ApolloClient.Builder 类中找到 okhttpclient() 方法。它显示“无法解析‘Builder’中的方法‘okHttpClient’...

回答 1 投票 0

使用Retrofit/OkHttp的Authenticator时如何防止并行刷新令牌请求?

我偶然发现了一个问题,我开始向我构建的后端服务器发送过于并行的刷新令牌请求,这导致了并发问题,其中存在竞争条件,其中...

回答 1 投票 0

OkHttp POST 向 Pocketbase 发送无效格式

我正在尝试通过 OkHttp 向本地 Pocketbase 服务器发送 POST 请求,但它不起作用。 在 Pocketbase 中,我有一个名为服务器的集合。我有一个名为 guild_id 的字段,它设置为

回答 1 投票 0

Java okHttp 2 次握手 SSL

您好,我找不到解决方案,如何使用我的证书来签署 REST API 请求,以进行双向握手? 我的代码: HttpUrl.Builder httpUrlBuilder = httpUrl.newBuilder(); Request.Builder 构建...

回答 1 投票 0

OkHttp:无法更改发布请求的字符集

我需要发布带有一些罕见字符集的表单数据,并且...... 我从来源中发现它可以是,而不是 addFormDataPart(name, value@rareCharset) 应用 { addPart(MultipartBody.Part.createFormData(

回答 1 投票 0

使用当前代码向 Kotlin okHttp Retrofit2 中的每个请求添加自定义标头

我尝试通过将 .addHeader() 添加到 OkHttpClient.Builder() 来向每个请求添加自定义标头,但在构建时出现以下错误: MicroApiClient.kt: (16, 14): 未解决的参考...

回答 2 投票 0

在 Java 中使用 OkHttp 按日期范围获取 GitHub Pull 请求时出现问题

我正在开发一个 Java 程序,使用 OkHttp 和 GitHub API 在指定日期范围内从 GitHub 存储库检索拉取请求。但是,我遇到了代码没有遇到的问题

回答 1 投票 0

Android Retrofit 多部分请求分为两部分

我正在学习使用 Retrofit2 从 Android 应用程序进行 REST Api 调用。我有一个终点,它接受两个部分,如下所示: @多部分 @POST(“用户/personImageUpload5”...

回答 1 投票 0

okhttp 的 Wesocket 模拟服务器(android)

我想找到一个用于 android UI 测试(聊天)的普通 websocket 模拟服务器解决方案。我找到了这个例子 但我在这里看不到如何重现这种情况: 应用程序向

回答 1 投票 0

Java - 如何在 OkHttpClient 上使用模型获取 api 数据

我想用OkHttpClient从api中提取数据。我想要提取的示例数据:https://dummyjson.com/products 我创建了两个模型。我认为我正确地创建了模型。你认为我做错了什么...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.