@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
/**
* 点击事件...post方式获取
* @param view
*/
public void getData(View view){
//通过线程的方式来获取数据
getDataByThread();
}
/**
* 通过线程的方式来获取数据
*/
private void getDataByThread() {
new Thread(){
@Override
public void run() {
try {
//1.有一个请求的http客户端对象
HttpClient client = new DefaultHttpClient();
String path = "http://v.juhe.cn/toutiao/index";
//2.指定请求方式的对象
HttpPost httpPost = new HttpPost(path);
//5.创建传递参数的集合....并且把传递的参数放到集合中
List<BasicNameValuePair> params = new ArrayList<>();
params.add(new BasicNameValuePair("type","top"));
params.add(new BasicNameValuePair("key","597b4f9dcb50e051fd725a9ec54d6653"));
//4.创建一个请求实体内容的对象,,,,UrlEncodedFormEntity支持url编码,并且支持form格式
//list<? extends NameValuePair> params 要给服务器传递的参数,,,所有的参数需要放到集合里面,string encoding指定编码字符集
HttpEntity entity = new UrlEncodedFormEntity(params,"utf-8");
//3.http协议中,post请求方式,请求的参数是在请求的实体内容中....setEntity设置请求实体内容的对象
httpPost.setEntity(entity);
//6.执行post请求
HttpResponse httpResponse = client.execute(httpPost);
//7.获取
int statusCode = httpResponse.getStatusLine().getStatusCode();
if (statusCode == 200){
//获取到响应的字节流
InputStream inputStream = httpResponse.getEntity().getContent();
String json = streamToString(inputStream,"utf-8");
Log.i("--json---",json);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}.start();
}
private String streamToString(InputStream inputStream,String charset) {
try {
InputStreamReader inputStreamReader = new InputStreamReader(inputStream,charset);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
String s = null;
StringBuilder builder = new StringBuilder();
while ((s = bufferedReader.readLine()) != null){
builder.append(s);
}
bufferedReader.close();
return builder.toString();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}