实例介绍
【实例简介】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<UserInfo> 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<UserInfo>(); } 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<NameValuePair> pair = new ArrayList<NameValuePair>(); 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<NameValuePair> pair = new ArrayList<NameValuePair>(); 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; } } }
好例子网口号:伸出你的我的手 — 分享!
网友评论
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
支持(0) 盖楼(回复)