public void open() { try { URL url = new URL(m_url); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setReadTimeout(30 * 1000); conn.setConnectTimeout(30 * 1000); conn.setRequestMethod(m_method); if (m_token != null) conn.setRequestProperty("Authorization", m_token); if (m_body != null) { conn.setFixedLengthStreamingMode(m_body.length); conn.setRequestProperty("Content-Type", m_contentType); conn.setDoOutput(true); } if (m_responseListener != null) conn.setDoInput(true); if (m_body != null) { DataOutputStream wr = new DataOutputStream(conn.getOutputStream()); wr.write(m_body); wr.close(); } Log.d(TAG, m_method + " " + url); m_response.clear(); int resCode = conn.getResponseCode(); switch (resCode) { case HttpURLConnection.HTTP_UNAUTHORIZED: if (m_responseListener != null) m_responseListener.onUnauthorized(m_url, m_token); else m_response.putString(RESPONSE_UNAUTHORIZED, m_url); break; default: InputStream is = conn.getInputStream(); if (m_responseListener != null) m_responseListener.onResponse(resCode, is); else m_response.putString(RESPONSE_SUCCESS, URLUtils.convertStreamToString(is)); is.close(); } conn.disconnect(); } catch (IOException e) { e.printStackTrace(); if (m_responseListener != null) m_responseListener.onError(e); else m_response.putString(RESPONSE_ERROR, e.getMessage()); } }
@Override protected Void doInBackground(OnResponseListener... params) { OnResponseListener l = params[0]; OkHttpClient httpClient = new OkHttpClient(); Request request = new Request.Builder().url(QUESTIONS_ENDPOINT).build(); try { Response response = httpClient.newCall(request).execute(); l.onResponse(new ServerResponse(response.code(), response.body().string())); } catch (IOException e) { l.onResponse(new ServerResponse(404, "[]")); } return null; }
/** * * 获取更新信息 * * @param context 上下文 * @param pOnResponseListener 响应监听 * @return 是否有更新版本 */ public void checkUpdate(final Context context, final OnResponseListener pOnResponseListener) { // 先检查是否缓存过更新信息 VersionInfo vi = new VersionInfo(); StringBuffer savePath = new StringBuffer(); if (checkCache(context, vi, savePath)) { pOnResponseListener.onCache(vi, savePath.toString()); return; } if (task == null) task = new HttpAsyncTask() { @Override protected void onPostExecute(Boolean result) { super.onPostExecute(result); task = null; } }; else { Log.d(tag, "正在进行更新检查"); return; } task.execute( new IAsyncCallBack() { VersionInfo vi; VersionInfo newVi; @Override public boolean workToDo() { vi = getCurrentVersionInfo(context); newVi = getNewestVersionInfo(); if (vi == null || newVi == null) return false; return true; } @Override public void onComplete() { if (newVi.getVersionCode() <= vi.getVersionCode()) { updateCache(context, vi); if (pOnResponseListener != null) pOnResponseListener.onResponse(true, vi); } else { updateCache(context, newVi); if (pOnResponseListener != null) pOnResponseListener.onResponse(false, newVi); } } @Override public void onError() { if (pOnResponseListener != null) pOnResponseListener.onError(); } }); }
@Override public void run() { if (responseListener != null) { if (command == COMMAND_START) { responseListener.onStart(what); } else if (command == COMMAND_FINISH) { responseListener.onFinish(what); } else if (command == COMMAND_RESPONSE && response != null) { if (response.isSucceed()) { responseListener.onSucceed(what, response); } else { responseListener.onFailed( what, response.url(), response.getTag(), response.getErrorMessage()); } responseListener.onFinish(what); } else if (response == null) { responseListener.onFailed(what, null, null, null); responseListener.onFinish(what); } } }