我正在创build一个使用https与服务器通信的android应用程序。 我正在使用OkHttp和OkHttp发出请求。 这些工作正常的标准http请求。 以下是我所遵循的步骤。 步骤1:使用该命令从服务器获取证书文件 echo -n | openssl s_client -connect api.****.tk:443 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > gtux.cert 步骤2:使用以下命令将证书转换为BKS格式 keytool -importcert -v -trustcacerts -file "gtux.cert" -alias imeto_alias -keystore "my_keystore.bks" -provider org.bouncycastle.jce.provider.BouncyCastleProvider -providerpath "bcprov-jdk16-146.jar" -storetype BKS 它问我的密码,并成功创build文件。 第3步: 创build一个OkHttpClient,并使用相同的方式进行https请求 public class MySSLTrust { public static OkHttpClient trustcert(Context context){ OkHttpClient okHttpClient = new OkHttpClient(); try […]
我读了一些发送jsons到服务器的例子。 有人说: OkHttp是Java提供的HttpUrlConnection接口的实现。 它提供了一个用于编写内容的inputstream,并不知道(或关心)该内容是什么格式。 现在我想用一个名字和密码的参数做一个普通的URL。 这意味着我需要自己编码名称和值对码stream?
我在我的Android项目中使用Retrofit / OkHttp(1.6)。 我没有发现任何内置任何请求重试机制。 在search更多,我读OkHttp似乎有沉默重试。 我没有看到发生在我的任何连接(HTTP或HTTPS)上。 如何使用okclientconfiguration重试? 现在,我正在捕捉exception并重试维护一个计数器variables。
我正在使用OkHttp库来开发一个新项目,而且它的易用性给我留下了深刻的印象。 我现在有需要使用基本authentication。 不幸的是,工作示例代码缺乏。 我正在寻找一个如何在遇到HTTP 401标头时将用户名/密码凭据传递给OkAuthenticator的例子。 我查看了这个答案: 使用基本HTTP身份validation改进POST请求:“无法重试stream式HTTP正文” 但它并没有让我太过分。 OkHttp github repo上的示例也没有提供基于身份validation的示例。 有没有人有一个要点或其他代码示例让我指出正确的方向? 感谢你的协助!
我正在尝试通过Retrofit 2.0-beta3和Android中使用拦截器的OkHttpClient添加基于令牌的身份validation。 但是当我在OkHttpClient中添加拦截器时,我得到了UnsupportedOperationExceptionexception。 这里是我的代码:在ApiClient.java public static TrequantApiInterface getClient(final String token) { if( sTreqantApiInterface == null) { Log.v(RETROFIT_LOG, "Creating api client for the first time"); OkHttpClient okClient = new OkHttpClient(); okClient.interceptors().add(new Interceptor() { @Override public Response intercept(Interceptor.Chain chain) throws IOException { Request original = chain.request(); // Request customization: add request headers Request.Builder requestBuilder = original.newBuilder() .header("Authorization", […]
我正在为拥有带有自签名SSL证书的服务器的客户工作。 我正在使用包装的OkHttp客户端使用Retrofit + CustomClient: RestAdapter restAdapter = new RestAdapter.Builder().setEndpoint(Config.BASE_URL + Config.API_VERSION) .setClient(new CustomClient(new OkClient(), context)) .build(); OkHttp默认支持调用自签名SSL证书服务器吗? 顺便一提。 哪个客户端默认使用Retrofit? 我认为这是OkHttp,但是当我研究了一点,我意识到我需要导入OkHttp依赖项
我创build了一个帮助器类来处理我的应用程序中的所有http调用。 这是一个okhttp的简单单例包装,看起来像这样(我省略了一些不重要的部分): public class HttpUtil { private OkHttpClient client; private Request.Builder builder; … public void get(String url, HttpCallback cb) { call("GET", url, cb); } public void post(String url, HttpCallback cb) { call("POST", url, cb); } private void call(String method, String url, final HttpCallback cb) { Request request = builder.url(url).method(method, method.equals("GET") ? null : new RequestBody() […]
出于testing的目的,我试图添加一个套接字工厂到我的okHttp客户端,它设置代理时信任所有的东西。 这已经做了很多次,但我的信任套接字工厂的实现似乎是缺less的东西: class TrustEveryoneManager implements X509TrustManager { @Override public void checkClientTrusted(java.security.cert.X509Certificate[] chain, String authType) throws CertificateException { } @Override public void checkServerTrusted(java.security.cert.X509Certificate[] chain, String authType) throws CertificateException { } @Override public java.security.cert.X509Certificate[] getAcceptedIssuers() { return null; } } OkHttpClient client = new OkHttpClient(); final InetAddress ipAddress = InetAddress.getByName("XX.XXX.XXX.XXX"); // some IP client.setProxy(new Proxy(Proxy.Type.HTTP, new InetSocketAddress(ipAddress, […]
我正在开发应用程序使用OkHttp库,我的麻烦是我无法find如何设置连接超时和套接字超时。 OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder().url(url).build(); Response response = client.newCall(request).execute(); 谢谢。
我正在尝试使用Retrofit&OKHttp来cachingHTTP响应。 我遵循这个要点 ,结束了这个代码: File httpCacheDirectory = new File(context.getCacheDir(), "responses"); HttpResponseCache httpResponseCache = null; try { httpResponseCache = new HttpResponseCache(httpCacheDirectory, 10 * 1024 * 1024); } catch (IOException e) { Log.e("Retrofit", "Could not create http cache", e); } OkHttpClient okHttpClient = new OkHttpClient(); okHttpClient.setResponseCache(httpResponseCache); api = new RestAdapter.Builder() .setEndpoint(API_URL) .setLogLevel(RestAdapter.LogLevel.FULL) .setClient(new OkClient(okHttpClient)) .build() .create(MyApi.class); 这是带有Cache-Control头的MyApi public […]