android取得json数据

步骤一:页面返回JSON数据。

对本空间日志“php和AJAX的简单实现”的json.php代码做一些简单修改,代码如下:将代码 echo $_GET['jsoncallback'].'('.custom_json::encode($big_test).')';

改为 echo $_GET['jsoncallback'].custom_json::encode($big_test);

将文件另存为jsondata.php。

步骤二:编写Android代码。

1.编写Contact类,设置set和get方法。

package com.domain;

public class Contact {
private String name;
private int age;
private int sex;
private Double height;
private boolean is_human;
private String string;

public Contact() { }

public Contact(String name, int age, int sex, Double height,
boolean is_human, String string) {
this.name = name;
this.age = age;
this.sex = sex;
this.height = height;
this.is_human = is_human;
this.string = string;
}
public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public int getAge() {
return age;
}

public void setAge(int age) {
this.age = age;
}

public int getSex() {
return sex;
}

public void setSex(int sex) {
this.sex = sex;
}

public Double getHeight() {
return height;
}

public void setHeight(Double height) {
this.height = height;
}

public boolean isIs_human() {
return is_human;
}

public void setIs_human(boolean is_human) {
this.is_human = is_human;
}

public String getString() {
return string;
}

public void setString(String string) {
this.string = string;
}

}

2.编写输入流处理工具类StreamTools。

package com.shao.utils;

import java.io.ByteArrayOutputStream;
import java.io.InputStream;

public class StreamTools {
public static byte[] readInputStream(InputStream instream) throws Exception{
ByteArrayOutputStream outstream = new ByteArrayOutputStream();
byte[] buf = new byte[1024];
int len = 0 ;
while(( len = instream.read(buf)) != -1)
{
outstream.write(buf, 0, len);
}
byte[] data = outstream.toByteArray();//网页的二进制数据
outstream.close();
instream.close();
return data;

}

}

3.编写android布局文件main.xml。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:id="@+id/name"
android:layout_width="100dip"
android:layout_height="wrap_content"
/>

<ListView
android:id="@+id/listview"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>

新建布局文件item.xml。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:id="@+id/name"
android:layout_width="100dip"
android:layout_height="wrap_content"
/>
<TextView
android:id="@+id/sex"
android:layout_width="100dip"
android:layout_height="wrap_content"
/>

<TextView
android:id="@+id/age"
android:layout_width="100dip"
android:layout_height="wrap_content"
/>
<TextView
android:id="@+id/height"
android:layout_width="100dip"
android:layout_height="wrap_content"
/>
<TextView
android:id="@+id/is_human"
android:layout_width="100dip"
android:layout_height="wrap_content"
/>
<TextView
android:id="@+id/string"
android:layout_width="100dip"
android:layout_height="wrap_content"
/>

</LinearLayout>

在string.xml添加如下一行:

<string name="error">net error</string>

4.编写业务实现类。

package com.shao;

import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;

import org.json.JSONArray;
import org.json.JSONObject;

import com.domain.Contact;
import com.shao.utils.StreamTools;

public class MyService {

public static List<Contact> getLastContact() throws Throwable
{
String path = "http://192.168.1.100:8080/WebContent/testjson/jsondata.php";
List<Contact> contacts = new ArrayList<Contact>();
URL url = new URL(path);
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setConnectTimeout(5*1000);
conn.setRequestMethod("GET");
InputStream instream = conn.getInputStream();
byte[] data = StreamTools.readInputStream(instream);
String json = new String(data);
JSONArray array = new JSONArray(json);
for(int i=0;i<array.length();i++)
{
JSONObject item = array.getJSONObject(i);
Contact contact = new Contact(item.getString("name"),item.getInt("age"),item.getInt("sex"),item.getDouble("height"),item.getBoolean("is_human"),item.getString("string"));
contacts.add(contact);
}

return contacts;
}


}

5.编写主Activity类。

package com.shao;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import com.domain.Contact;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;

public class TestXML extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
try {
List<Contact> contacts = MyService.getLastContact();
List<HashMap<String,Object>> data = new ArrayList<HashMap<String,Object>>();

ListView listview = (ListView)findViewById(R.id.listview);
for(Contact contact : contacts)
{
HashMap<String,Object> item = new HashMap<String,Object>();
item.put("name", contact.getName());
item.put("sex",contact.getSex());
item.put("age", contact.getAge());
item.put("height", contact.getHeight());
item.put("is_human", contact.isIs_human());
item.put("string", contact.getString());
data.add(item);

}





SimpleAdapter adapter = new SimpleAdapter(this, data, R.layout.item,
new String[]{"name","sex","age","height","is_human","string"},
new int[]{R.id.name, R.id.sex, R.id.age, R.id.height, R.id.is_human, R.id.string});

listview.setAdapter(adapter);



} catch (Throwable e) {
Log.e("shao",e.toString());
Toast.makeText(this, R.string.error, 1).show();
}
}
}



6.开启访问网络功能 。

<uses-permission android:name="android.permission.INTERNET"/>

步骤三 测试。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值