android中http通信分为两种,即get和post,一般默认是get,这里就以get方式去访问中央气象局的json格式的数据,好看代码:
package dxd.httpurlconnection.test;
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 org.json.JSONException;
import org.json.JSONObject;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
public class HttpURLConnection_TestActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
URL mURL = null;
try {
mURL = new URL("http://www.weather.com.cn/data/sk/101010100.html");
} catch (MalformedURLException e) {
e.printStackTrace();
}
JSONObject json = getHttpJson(mURL);
if(json != null){
Log.e("HttpURLConnection_TestActivity",json.toString());
try {
json = json.getJSONObject("weatherinfo");// 获取weahtherinfo节点的属性
} catch (JSONException e1) {
e1.printStackTrace();
}
try {
Log.e("HttpURLConnection_TestActivity","isRadar = " + json.get("isRadar"));
Log.e("HttpURLConnection_TestActivity","time = " + json.get("time"));
Log.e("HttpURLConnection_TestActivity","WSE = " + json.get("WSE"));
Log.e("HttpURLConnection_TestActivity","WS = " + json.get("WS"));
Log.e("HttpURLConnection_TestActivity","WD = " + json.get("WD"));
Log.e("HttpURLConnection_TestActivity","Radar = " + json.get("Radar"));
Log.e("HttpURLConnection_TestActivity","temp = " + json.get("temp"));
Log.e("HttpURLConnection_TestActivity","cityid = " + json.get("cityid"));
Log.e("HttpURLConnection_TestActivity","city = " + json.get("city"));
} catch (JSONException e) {
e.printStackTrace();
}
}
}
/**
* 传入一个网络访问地址,放回一个json格式的数据。前提是返回数据要满足json格式。
* @param url
* @return
*/
public JSONObject getHttpJson(URL url){
InputStream in = null ;
HttpURLConnection httpConn = null ;
JSONObject json = null ;
BufferedReader br = null ;
String str = "" ;
String line = "" ;
try {
// 打开连接,返回一个http连接对象
httpConn = (HttpURLConnection) url.openConnection();
in = httpConn.getInputStream();
br = new BufferedReader(new InputStreamReader(in,"utf-8"));
while((line = br.readLine()) != null){
str += line ;
}
} catch (IOException e) {
e.printStackTrace();
}
try {
json = new JSONObject(str);
} catch (JSONException e) {
e.printStackTrace();
}
return json ;
}
}