【实例简介】Android客户端用Json与Asp.Net服务器交互信息
【实例截图】
【核心代码】
package com.kulmao.json;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
public class MainForm extends Activity
{
private static final String URL = "http://192.168.1.30:800/WebJson/DowUser.aspx";
private Context mContext;
private List lUser;
private TextView txtUserInfo;
private Button btnDow;
private Button btnUp;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
txtUserInfo = (TextView)findViewById(R.id.txtUserInfo);
btnDow = (Button)findViewById(R.id.btnDow);
btnUp = (Button)findViewById(R.id.btnUp);
btnDow.setOnClickListener(new btnDow_OnClickListener());
btnUp.setOnClickListener(new btnUp_OnClickListener());
mContext = this;
lUser = new ArrayList();
}
public class btnDow_OnClickListener implements OnClickListener
{
@Override
public void onClick(View v)
{
dowData();
}
}
public class btnUp_OnClickListener implements OnClickListener
{
@Override
public void onClick(View v)
{
upData();
}
}
public void dowData()
{
try
{
lUser.clear();
JSONObject user = new JSONObject();
user.put("username", "admin");
user.put("password", "1111");
HttpPost httpPost = new HttpPost(URL);
List pair = new ArrayList();
pair.add(new BasicNameValuePair("type", "dow"));
pair.add(new BasicNameValuePair("json", user.toString()));
httpPost.setEntity(new UrlEncodedFormEntity(pair, "utf-8"));
HttpResponse resp = new DefaultHttpClient().execute(httpPost);
if(resp.getStatusLine().getStatusCode() == HttpStatus.SC_OK)
{
String strResult = EntityUtils.toString(resp.getEntity());
JSONArray array = new JSONArray(strResult);
for(int i = 0; i < array.length(); i )
{
JSONObject dataJson = array.getJSONObject(i);
UserInfo userInfo = new UserInfo();
userInfo.setId(dataJson.getInt("Id"));
userInfo.setUsername(dataJson.getString("Username"));
userInfo.setHobby(dataJson.getString("Hobby").substring(1, dataJson.getString("Hobby").length() - 1).replace("\"", "").split(","));
userInfo.setBirthday(getTimestampByString(dataJson.getString("Birthday")));
lUser.add(userInfo);
}
String info = "";
for(UserInfo ui : lUser)
{
info = "Id:" ui.getId() "\r\n"
"Name:" ui.getUsername() "\r\n"
"Hobby:" getStringByArray(ui.getHobby(), ",") "\r\n"
"Birthday:" ui.getBirthday().toString() "\r\n";
}
txtUserInfo.setText(info);
}
else
{
Toast.makeText(this, "服务器通信失败,错误代码:" resp.getStatusLine().getStatusCode(), Toast.LENGTH_SHORT).show();
}
}
catch (JSONException e)
{
e.printStackTrace();
}
catch (UnsupportedEncodingException e)
{
e.printStackTrace();
}
catch (ClientProtocolException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
}
public void upData()
{
if(lUser.size() == 0)
{
Toast.makeText(mContext, "请先下载数据!", Toast.LENGTH_SHORT).show();
return;
}
try
{
JSONArray userArray = new JSONArray();
for(UserInfo ui : lUser)
{
JSONObject userObject = new JSONObject();
userObject.put("Id", ui.getId());
userObject.put("Username", ui.getUsername());
JSONArray hobby = new JSONArray();
for(String str : ui.getHobby()) hobby.put(str);
userObject.put("Hobby", hobby);
userObject.put("Birthday", ui.getBirthday());
userArray.put(userObject);
}
List pair = new ArrayList();
pair.add(new BasicNameValuePair("type", "up"));
pair.add(new BasicNameValuePair("json", userArray.toString()));
HttpPost post = new HttpPost(URL);
post.setEntity(new UrlEncodedFormEntity(pair, "utf-8"));
HttpResponse resp = new DefaultHttpClient().execute(post);
if(resp.getStatusLine().getStatusCode() == HttpStatus.SC_OK)
{
Toast.makeText(mContext, "上传成功!", Toast.LENGTH_SHORT).show();
}
else
{
Toast.makeText(mContext, "与服务器通信失败,错误代码:" resp.getStatusLine().getStatusCode(), Toast.LENGTH_SHORT).show();
}
}
catch (JSONException e)
{
e.printStackTrace();
}
catch (UnsupportedEncodingException e)
{
e.printStackTrace();
}
catch (ClientProtocolException e)
{
e.printStackTrace();
} catch (IOException e)
{
e.printStackTrace();
}
}
public String getStringByArray(String[] str, String expr)
{
String ss = "";
for(String s : str) ss = s expr;
return ss.substring(0, ss.length() - 1);
}
public static Timestamp getTimestampByString(String dateTime)
{
if(null == dateTime || dateTime.length() == 0)
return null;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
Timestamp date = null;
try
{
date = new Timestamp(sdf.parse(dateTime.replace("T", " ")).getTime());
}
catch (Exception e)
{
return null;
}
return date;
}
public class UserInfo
{
private int id;
private String username;
private String[] hobby;
private Timestamp birthday;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String[] getHobby() {
return hobby;
}
public void setHobby(String[] hobby) {
this.hobby = hobby;
}
public Timestamp getBirthday() {
return birthday;
}
public void setBirthday(Timestamp birthday) {
this.birthday = birthday;
}
}
}