网络通信之xml解析和json解析
2017-07-26 19:50
447 查看
我们可以来一个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; } //细节 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); } } }
这样子就可以啦!!
相关文章推荐
- 网络通信之xml解析和json解析
- 网络通信框架Volley之二——访问服务器获取Json.xml数据和详细的解析数据
- 网络通信值获取和解析xml和json
- Android网络通信之解析XML以及解析JSON
- AFNetWorking 简单介(XML,JSON解析和判断网络状态
- iOS 开发 网络编程与通信之XML解析
- Android访问网络系列之--服务端返回XML或JSON格式数据,Android 进行解析并显示
- iOS网络-02-数据解析(JSON与XML)
- 核心技术篇:4.android网络通信之sax解析xml
- iOS开发 - 第04篇 - 网络 - 02 - JSON解析 & 请求 & 黑酷例子 & HTTP通信
- iOS之网络—— JSON解析、XML解析、文件下载、文件的压缩和解压缩
- Android网络与数据存储——网络编程数据处理(网络请求解析Json,解析xml)
- IOS-网络(JSON解析数据与XML解析数据)
- android解析JSON,XML数据的请求网络工具类
- IOS网络篇:JSON和XML的解析
- Android开发案例:网络交互&XML与json数据解析&HttpUtil优化
- Android访问网络系列之--服务端返回XML或JSON格式数据,Android 进行解析并显示
- android中的网络解析xml,json,html框架
- iOS开发——网络篇——JSON和XML,NSJSONSerialization ,NSXMLParser(XML解析器),NSXMLParserDelegate,MJExtension (字典转模型),GDataXML(三方框架解析XML)
- Android学习笔记---26_网络通信之资讯客户端,使用pull解析器,解析,从网络中获得的自定义xml文件