关于 HttpClient
modle的buil.gradle文件中android根标签下 添加useLibrary 'org.apache.http.legacy'
HttpClient 是 Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。一般用来网上抓包或者模拟登陆用的 比如:
(1) 使用GET方法抓包
1. 创建 HttpClient 的实例
2. 创建某种连接方法的实例,在这里是GetMethod。在 GetMethod 的构造函数中传入待连接的地址
3. 调用第一步中创建好的实例的 execute 方法来执行第二步中创建好的 method 实例
4. 读 response
5. 释放连接。无论执行方法是否成功,都必须释放连接
6. 对得到后的内容进行处理
根据以上步骤,我们来编写用GET方法来取得某网页内容的代码
/**
* 1--配置权限
* 2--配置使用httpclient,在gradle的android标签下配置( useLibrary 'org.apache.http.legacy')
* 3--开子线程请求网络
*/
public class MainActivity extends AppCompatActivity {
public String urlString = "http://api.expoon.com/AppNews/getNewsList/type/1/p/1";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.e("wzq-json","进入onCreate");
new Thread(new Runnable() {
@Override
public void run() {
try {
//httpclient 封装对象
DefaultHttpClient defaultHttpClient = new DefaultHttpClient();
//封装请求
HttpGet httpGet = new HttpGet(urlString);
HttpResponse httpResponse = defaultHttpClient.execute(httpGet);
// 拿到请求状态码
int statusCode = httpResponse.getStatusLine().getStatusCode();
if (statusCode == 200) {
//enty封装返回数据
HttpEntity entity = httpResponse.getEntity();
String jsonString = EntityUtils.toString(entity);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}).start();
}
}