package com.wulianwang.liaotian;import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;import org.apache.http.HttpEntity;import org.apache.http.HttpResponse;import org.apache.http.client.HttpClient;import org.apache.http.client.methods.HttpGet;import org.apache.http.impl.client.DefaultHttpClient;import android.os.AsyncTask;public class HttpData extends AsyncTask<String, Void, String>{ private HttpClient mHttpClient; private HttpGet mHttpGet; private HttpResponse mHttpResponse; private HttpEntity mHttpEntity; private InputStream in; private HttpGetDataListener listener; private String url; public HttpData(String url,HttpGetDataListener listener) { this.url = url; this.listener = listener; } @Override protected String doInBackground(String... params) { try { mHttpClient = new DefaultHttpClient(); mHttpGet = new HttpGet(url); mHttpResponse = mHttpClient.execute(mHttpGet); mHttpEntity = mHttpResponse.getEntity(); in = mHttpEntity.getContent(); BufferedReader br = new BufferedReader(new InputStreamReader(in)); String line = null; StringBuffer sb = new StringBuffer(); while ((line = br.readLine()) != null) { sb.append(line); } return sb.toString(); } catch (Exception e) { } return null; } @Override protected void onPostExecute(String result) { listener.getDataUrl(result); super.onPostExecute(result); }}
2 回答
alionSSS
TA贡献57条经验 获得超82个赞
= =不会http基础请求吗?
post请求的代码内容大致如下:
/** post请求,获取返回字符串内容 */ public static HttpResult post(String url, byte[] bytes) { HttpPost httpPost = new HttpPost(url); ByteArrayEntity byteArrayEntity = new ByteArrayEntity(bytes); httpPost.setEntity(byteArrayEntity); return execute(url, httpPost); } /** 执行网络访问 */ private static HttpResult execute(String url, HttpRequestBase requestBase) { boolean isHttps = url.startsWith("https://");//判断是否需要采用https AbstractHttpClient httpClient = HttpClientFactory.create(isHttps); HttpContext httpContext = new SyncBasicHttpContext(new BasicHttpContext()); HttpRequestRetryHandler retryHandler = httpClient.getHttpRequestRetryHandler();//获取重试机制 int retryCount = 0; boolean retry = true; while (retry) { try { HttpResponse response = httpClient.execute(requestBase, httpContext);//访问网络 if (response != null) { return new HttpResult(response, httpClient, requestBase);//需要你自己去封装返回的结果 } } catch (Exception e) { IOException ioException = new IOException(e.getMessage()); retry = retryHandler.retryRequest(ioException, ++retryCount, httpContext);//把错误异常交给重试机制,以判断是否需要采取从事 LogUtils.e(e);//这个你可以直接改成Log.e() } } return null; }
【另外】现在多数项目都用第三方框架了,你咋还用这个过时的方法?
添加回答
举报
0/150
提交
取消