Articles of okhttp

从资源上传okhttp的二进制文件

我需要使用okhttp将apk中捆绑的二进制文件上传到服务器。 使用urlconnection,您只需获取资产的输入流,然后将其放入您的请求中。 但是,okhttp只为您提供上传字节数组,字符串或文件的选项。 由于您无法获取apk中捆绑的资产的文件路径,因此将文件复制到本地文件目录的唯一选项(我宁愿不这样做)然后将文件提供给okhttp? 有没有办法简单地使用assetinputstream直接向Web服务器发出请求? 编辑:我使用了接受的答案,但我没有创建一个静态实用程序类,而只是将子类化为RequestBody public class InputStreamRequestBody extends RequestBody { private InputStream inputStream; private MediaType mediaType; public static RequestBody create(final MediaType mediaType, final InputStream inputStream) { return new InputStreamRequestBody(inputStream, mediaType); } private InputStreamRequestBody(InputStream inputStream, MediaType mediaType) { this.inputStream = inputStream; this.mediaType = mediaType; } @Override public MediaType contentType() { return mediaType; } @Override […]

既然在Android上不推荐使用SSLSocketFactory,那么处理客户端证书身份validation的最佳方法是什么?

我正在开发一款需要客户端证书身份validation(带有PKCS 12文件)的Android应用。 在所有apache.http.*被弃用之后,我们已经开始在我们的网络层上进行重构,我们决定使用OkHttp作为替代品,到目前为止我非常喜欢它。 但是,我没有find任何其他方法来处理客户端证书auth而不使用SSLSocketFactory ,OkHttp或其他任何事情。 那么在这种特殊情况下,最好的行动方案是什么呢? OkHttp还有另一种方法来处理这种身份validation吗?

如何使用OkHttp 2.0实现Android Volley?

OkHttp2.0不再支持此OkHttpStack: https ://gist.github.com/JakeWharton/5616899 将OkHttp 2.0.0与Volley集成的当前模式是什么?

如何在没有请求主体的情况下发出OKHTTP发布请求?

在okhttp库中没有请求主体的情况下制作OkHTTP发布请求的可能方法?

用于在Android中脱机测试服务器响应的透明代理

我有一个数据驱动的Android应用程序支架。 添加测试,旨在实现100%的覆盖率。 使用OkHttp 。 如何使用模拟响应透明地拦截对我的服务器的调用? 想要这种端到端和unit testing。 例如:将构建types设置为MockServer应该加载一个将在模拟器中显示模拟响应的应用程序。

改造:如果响应代码为401,则重定向到LoginActivity

如何从拦截器(非活动类)启动LoginActivity ? 我已经尝试了下面的代码( Interceptor )但不适合我。 拦截器 OkHttpClient client = new OkHttpClient.Builder().addInterceptor(new Interceptor() { @Override public Response intercept(Chain chain) throws IOException { Request newRequest = chain.request().newBuilder() .addHeader(“Authorization”, “Bearer ” + auth_token_string) .build(); Response response = chain.proceed(newRequest); Log.d(“MyApp”, “Code : “+response.code()); if (response.code() == 401){ Intent intent = new Intent(SplashActivity.getContextOfApplication(), LoginActivity.class); startActivity(intent); finish(); //Not working return response; […]

Retrofit + Okhttp取消操作不起作用

我在我的应用程序中使用这样的改造 final OkHttpClient okHttpClient = new OkHttpClient(); okHttpClient.interceptors().add(new YourInterceptor()); final OkClient okClient = new OkClient(okHttpClient); Builder restAdapterBuilder = new RestAdapter.Builder(); restAdapterBuilder.setClient(okClient).setLogLevel(LogLevel.FULL) .setEndpoint(“some url”); final RestAdapter restAdapter = restAdapterBuilder.build(); public class YourInterceptor implements Interceptor { @Override public Response intercept(Chain chain) throws IOException { // TODO Auto-generated method stub Request request = chain.request(); if (request != null) […]

OKhttp PUT示例

我的要求是使用PUT ,向服务器发送标题和正文,这将更新数据库中的内容。 我刚刚阅读了okHttp文档 ,我试图使用他们的POST示例,但它不适用于我的用例(我想这可能是因为服务器要求我使用PUT而不是POST ) 。 这是我用POST方法: public void postRequestWithHeaderAndBody(String url, String header, String jsonBody) { MediaType JSON = MediaType.parse(“application/json; charset=utf-8”); RequestBody body = RequestBody.create(JSON, jsonBody); OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(url) .post(body) .addHeader(“Authorization”, header) .build(); makeCall(client, request); } 我曾尝试使用PUT搜索okHttp示例但没有成功,如果我需要使用PUT方法,那么反正使用okHttp? 我正在使用okhttp:2.4.0(以防万一),感谢任何帮助!

Android在OKHttp中启用TLSv1.2

我正在使用OKHttp进行我的项目。 我想为我的服务电话启用TLSv1.2。 任何人都可以告诉我如何启用它。

在Android中为OkHttp设置缓存的正确方法

我正在尝试为OkHttp设置缓存,所以它只在我第一次尝试从服务器检索响应时才向服务器请求,直到过期的头日期,或者来自服务器的缓存控制头使响应无效从缓存中。 目前,它缓存响应,但在再次请求资源时不使用它。 可能这不是应该使用的方式。 我正在使用这样的缓存设置OkHttpClient: public static Cache createHttpClientCache(Context context) { try { File cacheDir = context.getDir(“service_api_cache”, Context.MODE_PRIVATE); return new Cache(cacheDir, HTTP_CACHE_SIZE); } catch (IOException e) { Log.e(TAG, “Couldn’t create http cache because of IO problem.”, e); return null; } } 这是这样使用的: if(cache == null) { cache = createHttpClientCache(context); } sClient.setCache(cache); 这就是我用OkHttp向服务器发出的一个请求,它实际上没有使用缓存: public static JSONObject getApi(Context […]