Articles of okhttp

Retrofit(2.0 beta2)Multipart文件上传不起作用

我正在使用Square Retrofit版本2.0 beta2。 我试过按照本教程。 我试图将位图图像上传到服务器,但不知何故代码不起作用。 我已经尝试使用邮递员测试我的服务器,我能够发布照片,甚至能够检索它。 这是我的烧瓶控制器。 @app.route(‘/api/photo/user/’, methods=[“POST”]) def post_user_photo(user_id): app.logger.info(“post_user_photo=> user_id:{}, photo: {}”.format( user_id, request.files[‘photo’].filename, )) user = User.query.get_or_404(user_id) try: user.photo = request.files[‘photo’].read() except Exception as e: app.logger.exception(e) db.session.rollback() raise db.session.commit() return “”, codes.no_content 我用邮递员来测试我的控制器,这是邮递员生成的请求。 POST /api/photo/user/5 HTTP/1.1 Host: blooming-cliffs-9672.herokuapp.com Cache-Control: no-cache Postman-Token: 8117fb79-4781-449d-7d22-237c49b53389 Content-Type: multipart/form-data; boundary=—-WebKitFormBoundary7MA4YWxkTrZu0gW —-WebKitFormBoundary7MA4YWxkTrZu0gW Content-Disposition: form-data; name=”photo”; filename=”sfsu.jpg” Content-Type: […]

在v2.0中缺少OkHttpClient“open”方法

如果要从Okxttp库从1.x升级到2.x,那么显然缺少OkHttpClient方法“open”。 以下代码不会编译。 OkHttpClient client = new OkHttpClient(); HttpURLConnection conn = client.open(url);

消耗来自Okhttp的One-Shot ResponseBody会导致Retrofit出现问题

我正在使用带有Okhttp拦截器的Retrofit来检测我的oauth令牌是否已过期。 如果令牌已过期,我想请求新令牌,再次尝试请求,然后将该响应发送到Retrofit。 这是我的拦截器类: public class CustomInterceptor implements Interceptor { @Override public Response intercept(Chain chain) throws IOException { Request request = chain.request(); // try the request Response response = chain.proceed(request); if (response.body().string().contains(Constants.TOKEN_AUTH_ERROR_MESSAGE)) { Log.v(“retrofit_error”, “token expired”); //get current token, create headers OAuthTokenResponse expiredToken = SharedPreferencesUtil.getOAuthToken(); OAuthTokenResponse newOauthToken = RestClient.getInstance().getTokenService().refreshOauthToken(expiredToken.getRefreshToken()); //store new token, return SharedPreferencesUtil.saveOAuthToken(newOauthToken); // create […]

我们是否有可能在OkHttp拦截器中停止请求?

在我们的应用程序中,我们遇到了一个特例 – 如果我们的App.specialFlag == true ,我们需要停止来自代码的任何请求。 我们认为,在这种情况下最好的方法是包括特殊的Interceptor ,它会阻止我们的任何请求,如下所示: if (App.specialFlag) { // Somehow stop request } else { return chain.proceed(chain.request()); } 另外,我们应该注意,我们使用RxJavaCallAdapterFactory将响应包装到Observable 。 但我们没有看到任何在OkHttp拦截器中停止请求的方法。 我们提出了两种解决问题的方法: a)创建特殊的ApiService.class用于包装我们的API中的每个请求,如下所示: public Observable getUserDetails() { if (App.specialFlag) { return Observable.just(null); } return api.getUserDetails(); } 但我们认为这是一个丑陋而繁琐的解决方案。 b)在Interceptor中抛出RuntimeException ,然后在我们使用API​​的每个地方捕获它。 第二个解决方案也不好,因为我们需要在链中包含很多onErrorResumeNext运算符。 可能有人知道,如何以更“聪明”的方式处理我们的情况? 提前致谢!

在OKHttp 2.0中,Retrofit在类路径错误上检测到不受支持的OkHttp

我在我的项目中使用Retrofit-1.6.0 + okhttp-2.0.0-RC1 。 当我运行项目时,我得到了错误。 java.lang.RuntimeException: Retrofit detected an unsupported OkHttp on the classpath. To use OkHttp with this version of Retrofit, you’ll need: 1. com.squareup.okhttp:okhttp:1.6.0 (or newer) 2. com.squareup.okhttp:okhttp-urlconnection:1.6.0 (or newer) Note that OkHttp 2.0.0+ is supported! 有谁知道如何解决这个问题?

当我尝试记录网络响应时,OKHttp抛出非法状态exception

我在我的OkHttp客户端上放了以下拦截器: httpClient.addInterceptor(new Interceptor() { @Override public Response intercept(Chain chain) throws IOException { Response response = chain.proceed(chain.request()); Log.d(“Response”, response.body().string()); return response; } }); 但是,这对于Retrofit 2来说效果并不好。看起来你只能从响应中读取一次流,这可能是造成exception的原因。 我在想改造试图解析日志已经解析过的流。 那么我如何得到回应呢? 我目前正在尝试调试一个非常讨厌和奇怪的格式错误的jsonexception。 这是exception堆栈跟踪: 07 – 28 10: 58: 21.575 22401 – 22529 / REDACTED E / AndroidRuntime: FATAL EXCEPTION: OkHttp Dispatcher Process: REDACTED, PID: 22401 java.lang.IllegalStateException: closed at okhttp3.internal.http.Http1xStream$FixedLengthSource.read(Http1xStream.java: 378) […]

OkHttp + Picasso + Retrofit

问题是如何将所有这3个库合并到一个项目中? 使一个OkHttpClient成为Picasso和Retrofit的背景图层。 如何在Volley lib中进行优先级更改。 (分页)?

改造“java.net.ProtocolException:意外的状态行”,任何人?

我的Android应用程序崩溃了以下堆栈跟踪,但是当我从桌面rest客户端尝试它时,它运行良好。 有谁知道问题可能是什么? 04-23 16:00:50.449 27917-27983/com.iproperty.android.apps.irealtor D/Ireal_IrealtorClient﹕ —> HTTP GET http://beta2.irealtor.api.iproperty.com.my/Listing?pageSize=10000&orderby=1&order=-1 04-23 16:00:50.449 27917-27983/com.iproperty.android.apps.irealtor D/Ireal_IrealtorClient﹕ If-Modified-Since: 1398235278243 04-23 16:00:50.449 27917-27983/com.iproperty.android.apps.irealtor D/Ireal_IrealtorClient﹕ User-Agent: Android/0.0.20 04-23 16:00:50.449 27917-27983/com.iproperty.android.apps.irealtor D/Ireal_IrealtorClient﹕ Accept: application/json 04-23 16:00:50.449 27917-27983/com.iproperty.android.apps.irealtor D/Ireal_IrealtorClient﹕ Authorization: WFdSeW8vOTJ1Z3BoQlBJMk53VGpaekZRY2pCd1pYSlVXUT090 04-23 16:00:50.449 27917-27983/com.iproperty.android.apps.irealtor D/Ireal_IrealtorClient﹕ —> END HTTP (0-byte body) 04-23 16:00:50.549 27917-27983/com.iproperty.android.apps.irealtor D/Ireal_IrealtorClient﹕ —- ERROR http://beta2.irealtor.api.iproperty.com.my/Listing?pageSize=10000&orderby=1&order=-1 04-23 16:00:50.549 27917-27983/com.iproperty.android.apps.irealtor D/Ireal_IrealtorClient﹕ java.net.ProtocolException: […]

使用OkHttp或Retrofit将文件上载到AWS S3存储桶

是否有使用Square的OkHttp库或Retrofit库将文件上传到S3存储桶的示例。 我正在寻找一些示例,我可以使用预签名查询使用这些库上传文件。

OkHttp – 无法解析主机:没有关联的地址

我向我的服务器发出一个简单的HTTP GET请求,但过了一段时间我在使用wifi时遇到了这个问题: 无法解析主机“www.xxx-xxxxxxx.com”:没有与主机名关联的地址 但我对3G没有这个问题。 我正在Xperia平板电脑上运行应用程序Z和Wifi完美无瑕。 可能是ISP问题还是我的代码? public class OkHttpIsAlive { private final OkHttpClient client = new OkHttpClient(); private final String URL = “http://www.xxx-xxxx.com/upload/alive.php”; public void run() throws Exception { client.setConnectTimeout(20, TimeUnit.SECONDS); client.setWriteTimeout(20, TimeUnit.SECONDS); client.setReadTimeout(30, TimeUnit.SECONDS); Request request = new Request.Builder() .url(URL) .build(); Response response = client.newCall(request).execute(); if (!response.isSuccessful()) throw new IOException(“Unexpected code ” + response); […]