OkHttp发送请求
需要添加依赖
public class HttpUtil {
public static void sendRequestWithHttp(String address,okhttp3.Callback callback){
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url(address)
.build();
client.newCall(request).enqueue(callback);
}
}
public static void sendRequestWithHttpClient(String address,okhttp3.Callback callback){
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url(address)
.build();
client.newCall(request).enqueue(callback);
}
pull方式解析xml数据
private void parseXMLWithPull(String xmlData) {
try {
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
XmlPullParser parser = factory.newPullParser();
parser.setInput(new StringReader(xmlData));
int eventType = parser.getEventType();
String id = "";
String name = "";
String version = "";
while (eventType!=XmlPullParser.END_DOCUMENT){
String nodeName = parser.getName();
switch (eventType){
//开始解析马哥节点
case XmlPullParser.START_TAG:{
if("id".equals(nodeName)){
id = parser.nextText();
}else if("name".equals(nodeName)){
name = parser.nextText();
}else if("version".equals(nodeName)){
version = parser.nextText();
}
break;
}
//完成某个节点
case XmlPullParser.END_TAG:{
if("app".equals(nodeName)){
Log.d("main",id);
Log.d("main",name);
Log.d("main",version);
}
break;
}
}
eventType = parser.next();
}
}catch (Exception e){
e.printStackTrace();
}
}
SAX解析xml数据
新建一个类继承DefaultHandler;
public class Myhandler extends DefaultHandler {
private String nodeName;
private StringBuilder name;
private StringBuilder id;
private StringBuilder version;
@Override
public void startDocument() throws SAXException {
super.startDocument();
id = new StringBuilder();
name = new StringBuilder();
version = new StringBuilder();
}
@Override
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
super.startElement(uri, localName, qName, attributes);
nodeName = localName;//记录当前节点名字
}
@Override
public void characters(char[] ch, int start, int length) throws SAXException {
super.characters(ch, start, length);
//根据当前节点名字判断将内容添加到那个StringBuild中
if("id".equals(nodeName)){
id.append(ch,start,length);
}else if("name".equals(nodeName)){
name.append(ch,start,length);
}else if("version".equals(nodeName)){
version.append(ch,start,length);
}
}
@Override
public void endElement(String uri, String localName, String qName) throws SAXException {
super.endElement(uri, localName, qName);
if("app".equals(localName)){
Log.d("main",id.toString().trim());
Log.d("main",name.toString().trim());
Log.d("main",version.toString().trim());
//最后将StringBuilder清空
id.setLength(0);
name.setLength(0);
version.setLength(0);
}
}
@Override
public void endDocument() throws SAXException {
super.endDocument();
}
执行解析
private void parseXMLWithSax(String xmlData) {
try {
SAXParserFactory factory = SAXParserFactory.newInstance();
XMLReader xmlReader = factory.newSAXParser().getXMLReader();
Myhandler handler = new Myhandler();
xmlReader.setContentHandler(handler);
//开始执行解析
xmlReader.parse(new InputSource(new StringReader(xmlData)));
}catch (Exception e){
e.printStackTrace();
}
}
解析JSON数据
使用JSONObject解析
private void parseJSONWithJSONObject(String jsonData) {
try {
JSONArray array = new JSONArray(jsonData);
for(int i = 0;i<array.length();i++){
JSONObject object = array.getJSONObject(i);
String id = object.getString("id");
String name = object.getString("name");
String version = object.getString("version");
Log.d("main",id);
Log.d("main",name);
Log.d("main",version);
}
}catch (Exception e){
e.printStackTrace();
}
}
使用GSON解析
定义一个类
public class App {
private String id;
private String name;
private String version;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getVersion() {
return version;
}
public void setVersion(String version) {
this.version = version;
}
}
private void parseJSONWithGSON(String jsonData) {
Gson gson = new Gson();
//解析的是JSON数组 借助TypeToken将期望解析的数据类型传入到fromJson()中;
List<App> appList = gson.fromJson(jsonData,new TypeToken<List<App>>(){}.getType());
for(App app :appList){
Log.d("main",app.getId());
Log.d("main",app.getName());
Log.d("main",app.getVersion());
}
}
}
需要添加依赖
public class HttpUtil {
public static void sendRequestWithHttp(String address,okhttp3.Callback callback){
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url(address)
.build();
client.newCall(request).enqueue(callback);
}
}
public static void sendRequestWithHttpClient(String address,okhttp3.Callback callback){
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url(address)
.build();
client.newCall(request).enqueue(callback);
}
pull方式解析xml数据
private void parseXMLWithPull(String xmlData) {
try {
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
XmlPullParser parser = factory.newPullParser();
parser.setInput(new StringReader(xmlData));
int eventType = parser.getEventType();
String id = "";
String name = "";
String version = "";
while (eventType!=XmlPullParser.END_DOCUMENT){
String nodeName = parser.getName();
switch (eventType){
//开始解析马哥节点
case XmlPullParser.START_TAG:{
if("id".equals(nodeName)){
id = parser.nextText();
}else if("name".equals(nodeName)){
name = parser.nextText();
}else if("version".equals(nodeName)){
version = parser.nextText();
}
break;
}
//完成某个节点
case XmlPullParser.END_TAG:{
if("app".equals(nodeName)){
Log.d("main",id);
Log.d("main",name);
Log.d("main",version);
}
break;
}
}
eventType = parser.next();
}
}catch (Exception e){
e.printStackTrace();
}
}
SAX解析xml数据
新建一个类继承DefaultHandler;
public class Myhandler extends DefaultHandler {
private String nodeName;
private StringBuilder name;
private StringBuilder id;
private StringBuilder version;
@Override
public void startDocument() throws SAXException {
super.startDocument();
id = new StringBuilder();
name = new StringBuilder();
version = new StringBuilder();
}
@Override
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
super.startElement(uri, localName, qName, attributes);
nodeName = localName;//记录当前节点名字
}
@Override
public void characters(char[] ch, int start, int length) throws SAXException {
super.characters(ch, start, length);
//根据当前节点名字判断将内容添加到那个StringBuild中
if("id".equals(nodeName)){
id.append(ch,start,length);
}else if("name".equals(nodeName)){
name.append(ch,start,length);
}else if("version".equals(nodeName)){
version.append(ch,start,length);
}
}
@Override
public void endElement(String uri, String localName, String qName) throws SAXException {
super.endElement(uri, localName, qName);
if("app".equals(localName)){
Log.d("main",id.toString().trim());
Log.d("main",name.toString().trim());
Log.d("main",version.toString().trim());
//最后将StringBuilder清空
id.setLength(0);
name.setLength(0);
version.setLength(0);
}
}
@Override
public void endDocument() throws SAXException {
super.endDocument();
}
执行解析
private void parseXMLWithSax(String xmlData) {
try {
SAXParserFactory factory = SAXParserFactory.newInstance();
XMLReader xmlReader = factory.newSAXParser().getXMLReader();
Myhandler handler = new Myhandler();
xmlReader.setContentHandler(handler);
//开始执行解析
xmlReader.parse(new InputSource(new StringReader(xmlData)));
}catch (Exception e){
e.printStackTrace();
}
}
解析JSON数据
使用JSONObject解析
private void parseJSONWithJSONObject(String jsonData) {
try {
JSONArray array = new JSONArray(jsonData);
for(int i = 0;i<array.length();i++){
JSONObject object = array.getJSONObject(i);
String id = object.getString("id");
String name = object.getString("name");
String version = object.getString("version");
Log.d("main",id);
Log.d("main",name);
Log.d("main",version);
}
}catch (Exception e){
e.printStackTrace();
}
}
使用GSON解析
定义一个类
public class App {
private String id;
private String name;
private String version;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getVersion() {
return version;
}
public void setVersion(String version) {
this.version = version;
}
}
private void parseJSONWithGSON(String jsonData) {
Gson gson = new Gson();
//解析的是JSON数组 借助TypeToken将期望解析的数据类型传入到fromJson()中;
List<App> appList = gson.fromJson(jsonData,new TypeToken<List<App>>(){}.getType());
for(App app :appList){
Log.d("main",app.getId());
Log.d("main",app.getName());
Log.d("main",app.getVersion());
}
}
}