网络通信之xml解析和json解析
2017-07-27 22:04
399 查看
我们可以来一个Tomcat来测试一下。
1、打开Tomcat在webapps=》ROOT文件中,新建一个xml,一定要另保存为UTF-8,不然会出现乱码问题,还有可能后面的结果有问题。
2、打开浏览器输入ip地址再:自己的Tomca端口号,测试有没有出来官网,之后再斜杠/xml名字.xml,如果出来内容就是对的了。
之后我们在Android Studio中就直接上代码了。
xml配置文件的权限一定要加,因为今天要运用到网络拿数据。
xml解析:
权限:
xml布局文件:
java代码:
json解析:
在解析之前要导入一个fastjson-1.2.3.jar的jar包,放入libs中,就可以了。
然后就是xml布局文件:
java:
1、打开Tomcat在webapps=》ROOT文件中,新建一个xml,一定要另保存为UTF-8,不然会出现乱码问题,还有可能后面的结果有问题。
2、打开浏览器输入ip地址再:自己的Tomca端口号,测试有没有出来官网,之后再斜杠/xml名字.xml,如果出来内容就是对的了。
之后我们在Android Studio中就直接上代码了。
xml配置文件的权限一定要加,因为今天要运用到网络拿数据。
xml解析:
权限:
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
xml布局文件:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.zking.laci.android29_alarm.MainActivity" android:orientation="vertical" > <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="获得xml数据" android:onClick="getNet" /> </LinearLayout>
java代码:
package com.zking.laci.android29_alarm; import android.app.TimePickerDialog; import android.os.AsyncTask; import android.support.v4.animation.ValueAnimatorCompat; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.util.Xml; import android.view.View; import android.widget.TimePicker; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void getNet(View view){ new MyTask().execute(); } class MyTask extends AsyncTask{ @Override protected Object doInBackground(Object[] params) { //获取网络xml数据 String path="http://192.168.56.1:8080/students.xml"; try { URL url=new URL(path); //拿数据 HttpURLConnection connection= (HttpURLConnection) url.openConnection(); //设置请求方式 connection.setRequestMethod("GET"); //设置请求超过的时间 connection.setConnectTimeout(5000); //获取结果码 int code=connection.getResponseCode(); if(code==200){ //获取数据 InputStream is=connection.getInputStream(); //解析xml PULL XmlPullParser pullParser=Xml.newPullParser(); pullParser.setInput(is,"UTF-8"); //解析标签类型 int type=pullParser.getEventType(); while (type!=XmlPullParser.END_DOCUMENT) { switch (type) { case XmlPullParser.START_TAG: //获取开始标签的名字 String startTagName=pullParser.getName(); if("student".equals(startTagName)){ //获取属性id的值 String sid=pullParser.getAttributeValue(0); Log.i("test",sid+""); }else if("sname".equals(startTagName)){ String sname=pullParser.nextText(); Log.i("test",sname+"sname"); }else if("sage".equals(startTagName)){ String sage=pullParser.nextText(); Log.i("test",sage+""); } break; case XmlPullParser.END_TAG: break; 4000 } //细节 type=pullParser.next(); } is.close(); } } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (XmlPullParserException e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(Object o) { super.onPostExecute(o); } } }
json解析:
在解析之前要导入一个fastjson-1.2.3.jar的jar包,放入libs中,就可以了。
然后就是xml布局文件:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.zking.laci.android29_alarm.MainActivity" android:orientation="vertical" > <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="获得json数据" android:onClick="getjson" /> </LinearLayout>
java:
package com.zking.laci.android29_alarm; import android.app.ProgressDialog; import android.os.AsyncTask; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.util.Xml; import android.view.View; import com.alibaba.fastjson.JSON; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.util.List; public class MainActivity extends AppCompatActivity { private ProgressDialog pd; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); pd = new ProgressDialog(this); pd.setMessage("正在拼命加载中"); } public void getjson(View view){ new MyJsonTask().execute(); } class MyJsonTask extends AsyncTask{ @Override protected void onPreExecute() { pd.show(); super.onPreExecute(); } @Override protected Object doInBackground(Object[] params) { //获取网络json数据 String path="http://192.168.56.1:8080/students.json"; try { URL url= new URL(path); HttpURLConnection connection= (HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET"); connection.setConnectTimeout(5000); if(connection.getResponseCode()==200){ InputStream is=connection.getInputStream(); int len=0; byte[] b=new byte[1024]; StringBuffer sb=new StringBuffer(); while((len=is.read(b))!=-1){ String s=new String(b,0,len); sb.append(s); } Log.i("test",sb.toString()); //解析json BigObject bigObject=JSON.parseObject(sb.toString(),BigObject.class); Log.i("test",bigObject.getCount()+""); List<Student> students=bigObject.getStudents(); for (Student student : students) { Log.i("test",student.getSname()); } } } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(Object o) { pd.cancel(); super.onPostExecute(o); } }
相关文章推荐
- 网络通信框架Volley之二——访问服务器获取Json.xml数据和详细的解析数据
- 网络通信值获取和解析xml和json
- 网络通信之xml解析和json解析
- Android网络通信之解析XML以及解析JSON
- 网络HTTP、JSON、XML解析等 复习
- 利用网络通信获得并解析JSON
- IOS-网络(JSON解析数据与XML解析数据)
- IOS网络篇:JSON和XML的解析
- iOS网络编程开发—JSON解析与XML解析
- Java网络通信——XML和JSON
- Android网络开发中如何使用JSON进行网络通信---Android JSON数据通讯方法解析
- iOS网络编程开发笔记1—JSON和XML数据解析
- Android核心基础-7.Android 网络通信-4.获取网络XML,JSON
- Android网络数据JSON和XML的解析
- iOS 开发 网络编程与通信之XML解析
- Android网络开发中如何使用JSON进行网络通信---Android_JSON数据通讯方法解析
- iOS学习笔记网络篇之数据解析(JSON/XML)
- iOS:网络编程中三个数据解析协议HTTP、XML、JSON的详细介绍
- iOS开发 - 第04篇 - 网络 - 02 - JSON解析 & 请求 & 黑酷例子 & HTTP通信
- iOS之网络—— JSON解析、XML解析、文件下载、文件的压缩和解压缩