不知近水花先发,疑是经冬雪未销。—-张谓《早梅》
HttpUtil.java
package com.peng.json_net;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
/**
* Created by Peng on 2016/8/21.
*/
public class HttpUtil {
public static void sendHttpRequest(final String address,final HttpCallbackListener listener){
new Thread(new Runnable() {
@Override
public void run() {
HttpURLConnection conn = null;
try {
URL url =new URL(address);
conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setDoInput(true);
//conn.setDoOutput(true);
conn.setConnectTimeout(5000);
// if (conn.getResponseCode() == 200) {
InputStream in =conn.getInputStream();
InputStreamReader isr = new InputStreamReader(in);
BufferedReader br = new BufferedReader(isr);
String line;
//StringBuilder 缓存区 StringBuffer
StringBuilder builder = new StringBuilder();
while ((line = br.readLine()) != null) {
builder.append(line);
}
if(listener !=null){
// 回调onFinish()方法
listener.onFinish(builder.toString());
}
/*br.close();
isr.close();*/
// }
}catch (Exception e){
if (listener != null) {
// 回调onError()方法
listener.onError(e);
}
}finally {
if (conn != null) {
conn.disconnect();
}
}
}
}).start();
}
}
HttpCallbackListener.java
package com.peng.json_net;
/**
* Created by Peng on 2016/8/21.
*/
public interface HttpCallbackListener {
/**
* 服务器成功响应我们请求的时候调用
* @param builder
*/
void onFinish(String builder);
/**
* 进行网络操作出现错误的时候调用
* @param e
*/
void onError(Exception e);
}
MainActivity.java
......
public void click(View view) {
final String path ="http://192.168.1.104:8080/get_data3.json";
HttpUtil.sendHttpRequest(path, new HttpCallbackListener() {
/**
*重写了onFinish()和onError()方法
*/
@Override
public void onFinish(String builder) {
try {
System.out.println(path);
JSONObject root = new JSONObject(builder.toString());
System.out.println("name= " + root.getString("name") +
" age= " + root.getInt("age") +
" address= " + root.getString("address"));
JSONArray array = root.getJSONArray("languages");
for (int i = 0; i < array.length(); i++) {
JSONObject lan = array.getJSONObject(i);
System.out.println("-----------------");
System.out.println("id= " + lan.getInt("id"));
System.out.println("name= " + lan.getString("name"));
System.out.println("ide= " + lan.getString("ide"));
}
} catch (JSONException e) {
e.printStackTrace();
}
}
@Override
public void onError(Exception e) {
System.out.println("网络异常");
}
});
}
.....