HttpClient和HttpURLConnection空调变频和定频的区别别

问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
话说HttpURLConnection真心难用。。。Android 21之后就不推荐用httpClient ,volly也有问题。。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
我推荐的是asynchttp,感觉使用起来十分舒服
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
看你喜好了。都是一句话模式
okhttp国人修改版
(目前在公司某项目里跑,挺好用)
自己写不仅麻烦而且考虑不周,有轮子就好好利用(有时间深入研究下轮子构造也是极好的)。
分享到微博?
Hi,欢迎来到 SegmentFault 技术社区!⊙▽⊙ 在这里,你可以提出编程相关的疑惑,关注感兴趣的问题,对认可的回答投赞同票;大家会帮你解决编程的问题,和你探讨技术更新,为你的回答投上赞同票。
明天提醒我
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:
扫扫下载 AppJava网络连接之HttpURLConnection与HttpClient - superonion - ITeye博客
博客分类:
HTTP 协议可能是现在 Internet 上使用得最多、最重要的协议了,越来越多的 Java 应用程序需要直接通过 HTTP 协议来访问网络资源。在 JDK
的 java.net 包中已经提供了访问 HTTP 协议的基本功能:HttpURLConnection。
HttpURLConnection是java的标准类,HttpURLConnection继承自URLConnection,可用于向指定网站发送GET请求、POST请求。它在URLConnection的基础上提供了如下便捷的方法:
int getResponseCode():获取服务器的响应代码。
String getResponseMessage():获取服务器的响应消息。
String getResponseMethod():获取发送请求的方法。
void setRequestMethod(String method):设置发送请求的方法。
在一般情况下,如果只是需要Web站点的某个简单页面提交请求并获取服务器响应,HttpURLConnection完全可以胜任。但在绝大部分情况下,Web站点的网页可能没这么简单,这些页面并不是通过一个简单的URL就可访问的,可能需要用户登录而且具有相应的权限才可访问该页面。在这种情况下,就需要涉及Session、Cookie的处理了,如果打算使用HttpURLConnection来处理这些细节,当然也是可能实现的,只是处理起来难度就大了。
为了更好地处理向Web站点请求,包括处理Session、Cookie等细节问题,Apache开源组织提供了一个HttpClient项目,看它的名称就知道,它是一个简单的HTTP客户端(并不是浏览器),可以用于发送HTTP请求,接收HTTP响应。但不会缓存服务器的响应,不能执行HTML页面中嵌入的Javascript代码;也不会对页面内容进行任何解析、处理。
简单来说,HttpClient就是一个增强版的HttpURLConnection,HttpURLConnection可以做的事情HttpClient全部可以做;HttpURLConnection没有提供的有些功能,HttpClient也提供了,但它只是关注于如何发送请求、接收
响应,以及管理HTTP连接。
使用HttpClient发送请求、接收响应很简单,只要如下几步即可。
创建HttpClient对象。
如果需要发送GET请求,创建HttpGet对象;如果需要发送POST请求,创建HttpPost对象。
如果需要发送请求参数,可调用HttpGet、HttpPost共同的setParams(HetpParams params)方法来添加请求参数;对于HttpPost对象而言,也可调用setEntity(HttpEntity entity)方法来设置请求参数。
调用HttpClient对象的execute(HttpUriRequest request)发送请求,执行该方法返回一个HttpResponse。
调用HttpResponse的getAllHeaders()、getHeaders(String name)等方法可获取服务器的响应头;调用HttpResponse的getEntity()方法可获取HttpEntity对象,该对象包装了服务器的响应内容。程序可通过该对象获取服务器的响应内容。
另外,Android已经成功地集成了HttpClient,这意味着开发人员可以直接在Android应用中使用Httpclient来访问提交请求、接收响应。
比如一个Android应用需要向指定页面发送请求,但该页面并不是一个简单的页面,只有当用户已经登录,而且登录用户的用户名有效时才可访问该页面。如果使用HttpURLConnection来访问这个被保护的页面,那么需要处理的细节就太复杂了。
其实访问Web应用中被保护的页面,使用浏览器则十分简单,用户通过系统提供的登录页面登录系统,浏览器会负责维护与服务器之间的Sesion,如果用户登录的用户名、密码符合要求,就可以访问被保护资源了。
在Android应用程序中,则可使用HttpClient来登录系统,只要应用程序使用同一个HttpClient发送请求,HttpClient会自动维护与服务器之间的Session状态,也就是说程序第一次使用HttpClient登录系统后,接下来使用HttpClient即可访问被保护页而了。
superonion
浏览: 100095 次
来自: 武汉
我觉得对于开发者来说,能脚本化编写爬虫是一件挺开心的事情( ̄▽ ...
请问怎么设置才不是自动播放啊,为什么我一运行就是自动播放啊。。 ...
这个有点抖动,不知道怎么去抖动啊?将线程睡眠时间降低也不行,可 ...
Instance方法上应该加上同步锁 方法名小写HttpClient与HttpURLConnection网络请求工具类_Android开发_动态网站制作指南
HttpClient与HttpURLConnection网络请求工具类
来源:人气:82
import .io.BufferedR
import java.io.BufferedW
import java.io.IOE
import java.io.InputS
import java.io.InputStreamR
import java.io.OutputS
import java.io.OutputStreamW
import java.net.HttpURLC
import java.net.URL;
import java.net.URLE
import java.util.ArrayL
import java.util.L
import java.util.M
import org.apache.http.HttpE
import org.apache.http.H
import org.apache.http.HttpV
import org.apache.http.NameValueP
import org.apache.http.client.HttpC
import org.apache.http.client.entity.UrlEncodedFormE
import org.apache.http.client.methods.HttpG
import org.apache.http.client.methods.HttpP
import org.apache.http.impl.client.DefaultHttpC
import org.apache.http.message.BasicNameValueP
import org.apache.http.params.BasicHttpP
import org.apache.http.params.HttpConnectionP
import org.apache.http.params.HttpP
import org.apache.http.params.HttpProtocolP
import org.apache.http.protocol.HTTP;
import android.text.TextU
import android.util.L
* HttpClient与HttpURLConnection 网络请求
* @author android.mtj 在Android6.0版本直接删除了HttpClient类库,如果仍想使用则解决方法是
1、如果使用的是eclse则在libs中加入org.apache.http.legacy.jar
这个jar包在:**sdk\platforms\android-23\optional目录中(需要下载android 6.0的SDK)
2、 如果使用的是android studio则 在相应的module下的build.gradle中加入:
android { useLibrary 'org.apache.http.legacy' }
public class HttpRequestUtils {
private static HttpRequestUtils mHttpU
* 获取实例
public static HttpRequestUtils getInstance() {
if (mHttpUtils == null) {
mHttpUtils = new HttpRequestUtils();
return mHttpU
* 创建HttpGet 请求
* @param url
public String useHttpClientGet(String url) {
String result = "";
HttpGet mHttpGet = new HttpGet(url);
mHttpGet.addHeader("Connection", "Keep-Alive");
HttpClient mHttpClient = createHttpClient();
HttpResponse mHttpResponse = mHttpClient.execute(mHttpGet);
HttpEntity mHttpEntity = mHttpResponse.getEntity();
// int code = mHttpResponse.getStatusLine().getStatusCode();
if (null != mHttpEntity) {
InputStream mInputStream = mHttpEntity.getContent();
result = converStreamToString(mInputStream);
mInputStream.close();
} catch (IOException e) {
e.printStackTrace();
Log.i("mtj", "result== "+result);
* 创建HttpPost 请求
* @param url
* @param map
public String useHttpClientPost(String url, Map&String, String& map) {
String result = "";
HttpPost mHttpPost = new HttpPost(url);
mHttpPost.addHeader("Connection", "Keep-Alive");
HttpClient mHttpClient = createHttpClient();
List&NameValuePair& postParams = new ArrayList&NameValuePair&();
// 要传递的参数
for (Map.Entry&String, String& entry : map.entrySet()) {
postParams.add(new BasicNameValuePair(entry.getKey(), entry
.getValue()));
mHttpPost.setEntity(new UrlEncodedFormEntity(postParams));
HttpResponse mHttpResponse = mHttpClient.execute(mHttpPost);
HttpEntity mHttpEntity = mHttpResponse.getEntity();
// int code = mHttpResponse.getStatusLine().getStatusCode();
if (null != mHttpEntity) {
InputStream mInputStream = mHttpEntity.getContent();
result = converStreamToString(mInputStream);
mInputStream.close();
} catch (IOException e) {
e.printStackTrace();
Log.i("mtj", "result== "+result);
* 创建HttpUrlConnectionPost 请求
* @param url
* @param map
public String useHttpUrlConnectionPost(String url, Map&String, String& map) {
String result = "";
InputStream mInputStream =
HttpURLConnection mHttpURLConnection = getHttpURLConnection(url, "POST");
List&NameValuePair& post = new ArrayList&NameValuePair&();
// 要传递的参数
for (Map.Entry&String, String& entry : map.entrySet()) {
post.add(new BasicNameValuePair(entry.getKey(), entry
.getValue()));
postParams(mHttpURLConnection.getOutputStream(), post);
mHttpURLConnection.connect();
mInputStream = mHttpURLConnection.getInputStream();
// int code = mHttpURLConnection.getResponseCode();
result = converStreamToString(mInputStream);
mInputStream.close();
} catch (IOException e) {
e.printStackTrace();
Log.i("mtj", "result== "+result);
* 创建HttpUrlConnectionGet 请求
* @param url
public String useHttpUrlConnectionGet(String url) {
String result = "";
InputStream mInputStream =
HttpURLConnection mHttpURLConnection = getHttpURLConnection(url, "GET");
mHttpURLConnection.connect();
mInputStream = mHttpURLConnection.getInputStream();
// int code = mHttpURLConnection.getResponseCode();
result = converStreamToString(mInputStream);
mInputStream.close();
} catch (IOException e) {
e.printStackTrace();
Log.i("mtj", "result== "+result);
// 创建HttpClient
private HttpClient createHttpClient() {
HttpParams mDefaultHttpParams = new BasicHttpParams();
// 设置连接超时
HttpConnectionParams.setConnectionTimeout(mDefaultHttpParams, 15000);
// 设置请求超时
HttpConnectionParams.setSoTimeout(mDefaultHttpParams, 15000);
HttpConnectionParams.setTcpNoDelay(mDefaultHttpParams, true);
HttpProtocolParams.setVersion(mDefaultHttpParams, HttpVersion.HTTP_1_1);
HttpProtocolParams.setContentCharset(mDefaultHttpParams, HTTP.UTF_8);
// 持续握手
HttpProtocolParams.setUseExpectContinue(mDefaultHttpParams, true);
HttpClient mHttpClient = new DefaultHttpClient(mDefaultHttpParams);
return mHttpC
// 将请求结果转换成String类型
private String converStreamToString(InputStream is) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
StringBuffer sb = new StringBuffer();
String line =
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
String respose = sb.toString();
// 创建HttpURLConnection
// requestMethod == POST / GET
private static HttpURLConnection getHttpURLConnection(String url,
String requestMethod) {
HttpURLConnection mHttpURLConnection =
URL mUrl = new URL(url);
mHttpURLConnection = (HttpURLConnection) mUrl.openConnection();
// 设置链接超时时间
mHttpURLConnection.setConnectTimeout(15000);
// 设置读取超时时间
mHttpURLConnection.setReadTimeout(15000);
// 设置请求参数
mHttpURLConnection.setRequestMethod(requestMethod);
// 添加Header
mHttpURLConnection.setRequestProperty("Connection", "Keep-Alive");
// 接收输入流
mHttpURLConnection.setDoInput(true);
// 传递参数时需要开启
mHttpURLConnection.setDoOutput(true);
} catch (IOException e) {
e.printStackTrace();
return mHttpURLC
// 因为我们要发送POST请求,所以在UrlConnManager类中再写一个postParams()方法
// 用来组织一下请求参数并将请求参数写入到输出流中
private void postParams(OutputStream output, List&NameValuePair& paramsList)
throws IOException {
StringBuilder mStringBuilder = new StringBuilder();
for (NameValuePair pair : paramsList) {
if (!TextUtils.isEmpty(mStringBuilder)) {
mStringBuilder.append("&");
mStringBuilder.append(URLEncoder.encode(pair.getName(), "UTF-8"));
mStringBuilder.append("=");
mStringBuilder.append(URLEncoder.encode(pair.getValue(), "UTF-8"));
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(
output, "UTF-8"));
writer.write(mStringBuilder.toString());
writer.flush();
writer.close();
优质网站模板HttpClient过时_使用HttpURLConnection还是HttpClient?_DD博客
android HttpClient过时
收款微信号 dwtedx
支付宝帐户
比特币帐户
深度剖解各个领域业务流程、全面展示自己的所长及个人发展新思路
微信公众号 : (推荐)
备案信息 :
DD博客上的所有软件和源码Demo及相关资料均为软件商和个人工作总结或网友推荐及网络收集整理而来、仅供学习和研究使用、切勿用做商业用途、如有侵犯版权者、请来信到邮箱 : 指出、DD博客将立即修正、净化网络版权环境、同时DD博客也不承担用户因使用这些下载资源对自己和他人造成任何形式的损失或伤害
& Copyright 2017. All rights reserved.HTTP访问的两种方式(HttpClient和HttpURLConnection)
使用HttpClient:
NameValuePair nameValuePair1 = new
BasicNameValuePair("name",&"yang");
NameValuePair nameValuePair2 = new
BasicNameValuePair("pwd","123123");
List nameValuePairs = new ArrayList();
nameValuePairs.add(nameValuePair1);
nameValuePairs.add(nameValuePair2);
String validateURL = "";
HttpParams httpParams = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParams,5000);&//设置连接超时为5秒
HttpClient client = new
DefaultHttpClient(httpParams);&//
生成一个http客户端发送请求对象
HttpPost httpPost = new
HttpPost(urlString);&//设定请求方式
&if (nameValuePairs!=null
&& nameValuePairs.size()!=0)
&&&&&&&&&&&&
&//把键值对进行编码操作并放入HttpEntity对象中
&&&&&&&&&&&&&
httpPost.setEntity(new
UrlEncodedFormEntity(nameValuePairs,HTTP.UTF_8));
HttpResponse&httpResponse =
client.execute(httpPost);&// 发送请求并等待响应
&&&&&&&&&&//
判断网络连接是否成功
&if (httpResponse.getStatusLine().getStatusCode()
&&&&&&&&&&&&
System.out.println("网络错误异常!!!!");
&&&&&&&&&&&&&return
&&&&&&&&&&&}
HttpEntity entity = httpResponse.getEntity(); // 获取响应里面的内容
inputStream = entity.getContent(); &//
得到服务气端发回的响应的内容(都在一个流里面)
//&得到服务气端发回的响应的内容(都在一个字符串里面)
//&String strResult =
EntityUtils.toString(entity);&
catch (Exception e) {
&&&System.out.println("这是异常!");
使用HttpURLConnection:
String validateURL="";
URL url = new URL(validateUrl);&//创建URL对象
&&&&&&&//返回一个URLConnection对象,它表示到URL所引用的远程对象的连接
HttpURLConnection conn = (HttpURLConnection)
url.openConnection();
conn.setConnectTimeout(5000); //设置连接超时为5秒
conn.setRequestMethod("GET"); //设定请求方式
conn.connect(); //建立到远程对象的实际连接
//返回打开连接读取的输入流
&&&&&&&DataInputStream
DataInputStream(conn.getInputStream());&&
&//判断是否正常响应数据&
if (conn.getResponseCode() != HttpURLConnection.HTTP_OK) {
&&&&&&&&&&
System.out.println("网络错误异常!!!!");
&&&&&&&&&&&return&
} catch (Exception e) {
&&&e.printStackTrace();
&System.out.println("这是异常!");
&&} finally {
&& &if (conn !=
&conn.disconnect();&//中断连接
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 同比和环比的区别 的文章

 

随机推荐