public class MainActivity extends Activity { private Spinner spinner; private Button button; private ArrayAdapter<String> adapter; private ProgressDialog dialog; private final String CITY_PATH_JSON = "http://172.25.152.34:8080/httptest/CityServlet?type=json"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); spinner = (Spinner)findViewById(R.id.spinner); button = (Button)findViewById(R.id.button); dialog = new ProgressDialog(MainActivity.this); button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { dialog.setTitle("提示信息"); dialog.setMessage("loading......"); dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); dialog.setCancelable(false); new MyAsyncTask().execute(CITY_PATH_JSON); } }); } public class MyAsyncTask extends AsyncTask<String, Void, List<String>> { @Override protected void onPreExecute() { dialog.show(); } @Override protected List<String> doInBackground(String... params) { List<String> cities = new ArrayList<String>(); String citiesString = HttpUtils.sendPostMessage(params[0], "utf-8"); // 解析服务器端的json数据 cities = JsonUtils.parseCities(citiesString);return cities; } @Override protected void onPostExecute(List<String> result) { adapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_spinner_item, result); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinner.setAdapter(adapter); dialog.dismiss(); } } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); return true; } }
当然别往了开启我们的网络授权
<uses-permission android:name="android.permission.INTERNET"/>
最后我们来看看效果图:
这样我们就完成了客户端与服务器端通过json来进行数据的交换
总结:本篇随笔主要讲解了JSON这种轻量级的数据交换格式的概念,以及讲解了两种解析json数据的解析类(json-lib以及gson),最后通过一个小例子实现了在Android客户端和服务器端使用json这种数据格式来进行数据的交换。
原文链接:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。