Articles of okhttp

如何在从站点下载和解析XML文件时一起使用Retrofit和SimpleXML?

我刚开始使用Retrofit。 我正在开发一个使用SimpleXML的项目。 有人可以为我提供一个示例,其中一个从站点获取XML,例如http://www.w3schools.com/xml/simple.xml “并将其读出来?

Android Volley MalformedURLException错误的URL

在使用Volley发出第二个网络请求后,我总是收到此错误。 我输入的url似乎并不重要。 Volley总是声称它是畸形的。 08-04 20:16:26.885 14453-14470/com.thredup.android E/Volley﹕ [994] NetworkDispatcher.run: Unhandled exception java.lang.RuntimeException: Bad URL java.lang.RuntimeException: Bad URL at com.android.volley.toolbox.BasicNetwork.performRequest(BasicNetwork.java:127) at com.android.volley.NetworkDispatcher.run(NetworkDispatcher.java:110) Caused by: java.net.MalformedURLException: Protocol not found: at java.net.URL.(URL.java:176) at java.net.URL.(URL.java:125) at com.android.volley.toolbox.HurlStack.performRequest(HurlStack.java:101) at com.android.volley.toolbox.BasicNetwork.performRequest(BasicNetwork.java:93) 进一步调查,我在HurlStack中放了几个日志。 在 public HttpResponse performRequest(Request request, Map additionalHeaders), 失败的请求是REQUEST [ ] 0x0 LOW 26. “ 因此,HurlStack的第101行: URL parsedUrl = new […]

ProGuard不使用okhttp

ProGuard不会与okhttp玩得很好,我一直收到以下警告: Warning:com.squareup.okhttp.internal.huc.HttpsURLConnectionImpl: can’t find referenced method ‘long getContentLengthLong()’ in program class com.squareup.okhttp.internal.huc.HttpURLConnectionImpl Warning:com.squareup.okhttp.internal.huc.HttpsURLConnectionImpl: can’t find referenced method ‘long getHeaderFieldLong(java.lang.String,long)’ in program class com.squareup.okhttp.internal.huc.HttpURLConnectionImpl Warning:com.squareup.okhttp.internal.huc.JavaApiConverter$CacheHttpsURLConnection: can’t find referenced method ‘long getContentLengthLong()’ in program class com.squareup.okhttp.internal.huc.JavaApiConverter$CacheHttpURLConnection Warning:com.squareup.okhttp.internal.huc.JavaApiConverter$CacheHttpsURLConnection: can’t find referenced method ‘long getHeaderFieldLong(java.lang.String,long)’ in program class com.squareup.okhttp.internal.huc.JavaApiConverter$CacheHttpURLConnection Warning:there were 4 unresolved references to program class members. Your […]

使用RxJava和Okhttp

我想在另一个线程(如IO线程)中使用okhttp请求一个url并在Android主线程中获取Response ,但我不知道如何创建一个Observable 。

图像适配器泄漏内存

我有一个简单的ListActivity来显示图像,我在ImageAdapter类的构造函数中为Picasso Builder提供了我的OkHttpClient: picassoClient = new OkHttpClient(); picassoClient.interceptors().add(new Interceptor() { @Override public Response intercept(Chain chain) throws IOException { Request newRequest = chain .request() .newBuilder() .addHeader(“Cookie”,”xyz”) .build(); return chain.proceed(newRequest); } }); new Picasso.Builder(context).downloader(new OkHttpDownloader(picassoClient)).build(); 然后在getView()使用Picasso在ImageView中加载图像: Picasso.with(context).load(xyzUrl).fit().centerCrop().into(vImage); 它工作得很好,但是在设备的旋转上,我看到堆大小有时会慢慢增长,有时很快,有时会保持稳定。 它很少掉落。 我泄漏内存还是代码有问题? 编辑:我在getView()调用Picasso后插入此代码 if (BuildConfig.DEBUG) { Log.i(“HEAP SIZE”, String.valueOf((Runtime.getRuntime().totalMemory() / 1024) – (Runtime.getRuntime().freeMemory() / 1024))); } 我发现在将位图加载到ImageView之后,堆大小的增长发生在getView() 。 哪里不对? 编辑2 […]

如何告诉OkHttpClient忽略缓存并从服务器强制刷新?

在我的Android应用程序中,我使用带有OkHttpClient的Retrofit,并启用了缓存来访问某些API。 我们的一些API有时会返回空数据。 我们在应用程序中提供“刷新”按钮,以便客户端从特定API重新加载数据。 如何告诉OkHttpClient特定请求应忽略缓存条目。 或者,是否有一种机制来删除对应于单个请求的缓存响应? 我看到Cache.remove(请求)方法,但它被标记为私有。

Retrofit – Okhttp客户端如何缓存响应

我正在尝试缓存由Retrofit(v 1.9.0)和OkHttp(2.3.0)完成的http调用的响应。 如果我尝试在没有互联网的情况下进行呼叫,那么它总是进行网络呼叫,然后是java.net.UnknownHostException 。 RESTClient实现 public class RestClient { public static final String BASE_URL = “http://something.example.net/JSONService”; private com.ucc.application.rest.ApiService apiService; public RestClient() { Gson gson = new GsonBuilder() .setDateFormat(“yyyy’-‘MM’-‘dd’T’HH’:’mm’:’ss’.’SSS’Z'”) .create(); RequestInterceptor requestInterceptor = new RequestInterceptor() { @Override public void intercept(RequestFacade request) { request.addHeader(“Accept”, “application/json”); int maxAge = 60 * 60; request.addHeader(“Cache-Control”, “public, max-age=” + maxAge); } […]

改造“IllegalStateException:已经执行”

我有一个Retrofit网络调用,每隔5秒运行一次。 我目前的代码: Handler h = new Handler(); int delay = 5000; //milliseconds h.postDelayed(new Runnable() { public void run() { call.enqueue(new Callback() { @Override public void onResponse(Response response) { Log.d(“api”, “response: ” + response.body().getPosition().getLatitude().toString()); } @Override public void onFailure(Throwable t) { } }); h.postDelayed(this, delay); } }, delay); 这运行一次,但随后抛出以下内容: java.lang.IllegalStateException:已经执行。 at retrofit2.OkHttpCall.enqueue(OkHttpCall.java:52)at retrofit2.ExecutorCallAdapterFactory $ ExecutorCallbackCall.enqueue(ExecutorCallAdapterFactory.java:57)at orbyt.project.MyFragment […]

Retrofit中的SocketTimeoutException

我正在尝试向服务器POST请求获取数据,但有时它发生了SocketTimeoutException ! 我使用Ok3Client来解决它,但我Ok3Client了同样的exception我该如何解决它? 我的代码如下 public void getNormalLogin() { if (mProgressDialog == null) { mProgressDialog = ViewUtils.createProgressDialog(mActivity); mProgressDialog.show(); } else { mProgressDialog.show(); } if (Build.VERSION.SDK != null && Build.VERSION.SDK_INT > 13) { restadapter = new RestAdapter.Builder().setEndpoint(HOST).setLogLevel(RestAdapter.LogLevel.FULL).setClient(new Ok3Client(new OkHttpClient())).build(); mApi = restadapter.create(Api.class); mApi.SignIn(etEmail.getText().toString(), etPassword.getText().toString(), new Callback<ArrayList>() { @Override public void success(ArrayList signUpMainBeen, Response response) { mProgressDialog.dismiss(); LOGD(“Status:: […]

OkHTTP和Picasso不会一起运行

我在我的项目中使用Picasso库来加载图像和缓存它们。 它没有任何问题,效果很好。 但是,当我尝试使用OkHttp库与我的服务器(JSON通信)进行数据通信时,Picasso会抛出exception。 我使用以下jar子:okhttp-2.0.0-RC2,okio-1.0.0,picasso-2.2.0。 当我添加这些jar子后运行我的项目时,它崩溃了以下内容: 06-12 11:13:15.824: E/dalvikvm(12105): Could not find class ‘com.squareup.okhttp.HttpResponseCache’, referenced from method com.squareup.picasso.OkHttpDownloader. 我添加okhttp只是为了使用以下方法: public static String executeHttpGet(String urlStr) { Response response = null; String result = “”; OkHttpClient client = new OkHttpClient(); try { Request request = new Request.Builder().url(urlStr).build(); response = client.newCall(request).execute(); result = response.body().string(); } catch (Exception ex) { […]