您的位置:首页 > 理论基础 > 计算机网络

HttpURLConnection请求数据

2016-06-13 11:01 441 查看
package com.bawei.http;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.net.HttpURLConnection;

import java.net.MalformedURLException;

import java.net.URL;

import java.net.URLConnection;

import java.util.List;

import com.bawei.bean.Bean;

import com.bawei.bean.CabinInfos;

import com.bawei.bean.Result;

import com.google.gson.Gson;

import android.os.Bundle;

import android.app.Activity;

import android.util.Log;

import android.view.Menu;

import android.widget.TextView;

public class MainActivity extends Activity {

private TextView tv;
private Gson gson;
private List<CabinInfos> cabinInfos;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

// 获取控件
tv = (TextView) findViewById(R.id.textView);
gson = new Gson();

new Thread() {

@Override
public void run() {
super.run();
getData();
}

}.start();

}

/**
* 联网请求数据
*
*/
private void getData() {

try {
// 得到URL对象,设置访问地址 这里是百度官网
URL url = new URL("http://169.254.89.125:8080/bawei/plane_tickets.json");
// 得到HttpURLConnection对象
HttpURLConnection httpURLConnection = (HttpURLConnection) url
.openConnection();
// 设置请求方式 两种------>POST/GET
httpURLConnection.setRequestMethod("POST");
// 设置连接超时
httpURLConnection.setConnectTimeout(5000);
// 设置读取超时
httpURLConnection.setReadTimeout(5000);

// 正式联网
httpURLConnection.connect();
// 获取状态码 ,也可以看作是响应码 200------->连接成功
int responseCode = httpURLConnection.getResponseCode();

if (responseCode == 200) {
Log.d("lcr", "联网请求成功");
// 获取包含数据的输入流
InputStream inputStream = httpURLConnection.getInputStream();

Bean bean = gson.fromJson(new InputStreamReader(
inputStream, "gbk"), Bean.class);
List<Result> result = bean.getResult();
for (Result result2 : result) {
cabinInfos = result2.getCabinInfos();
Log.d("lcr", cabinInfos.toString());
}

// 缓冲流
BufferedReader br = new BufferedReader(new InputStreamReader(
inputStream, "gbk"));
// 记录每一行读取的数据

// 拼接数据
final StringBuffer buffer = new StringBuffer();
while (true) {
String data = br.readLine();
if (data != null) {
buffer.append(data);
} else {
break;
}
}
runOnUiThread(new Runnable() {

@Override
public void run() {

tv.setText(cabinInfos.toString());
}
});

} else {
Log.d("lcr", "连网失败");
}

} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}


}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: