-
HttpURLConnection
URL url=new URL("<http://www.baidu.com>"); HttpURLConnection connection=(HttpURLConnection) url.openConnection(); //从服务器获取数据 connection.setRequestMethod("GET"); InputStream in=connection.getInputStream(); connection.disconnect(); //提交数据给服务器 connection.setRequestMethod("POST"); DataOutputStream out new DataOutputStream(connection.getOutputStream()); out.writeBytes("username=admin&password=123456");
-
OkHttp
OkHttpClient client=new OkHttpClient(); //request请求 Request request=new Request.Builder().url("<http://www.baidu.com>").build(); Response response=client.newCall(request).execute();//response对象中已经有返回的数据了 String responseData=response.body().string(); //post请求 RequestBody requestBody=new FormBody.Builder().add("username","admin").add("password","123456").builder(); Request request=new Request.Builder().url("<http://www.baidu.com>").post(requestBody).build(); Response response=client.newCall(request).execute();
-
XML格式解析
-
PULL解析方式
- 收到responseData之后,调用parseXMLWithPull方法
private void parseXMLWithPull(String xmlData) { try { XmlPullParserFactory factory=XmlPullParserFactory.newInstance(); XmlPullParser xmlPullParser=factory.newPullParser(); xmlPullParser.setInput(new StringReader(xmlData)); int eventType=xmlPullParser.getEventType(); String id=""; String name=""; String version=""; while (eventType!=XmlPullParser.END_DOCUMENT) { String nodeName=xmlPullParser.getName(); switch (eventType) { case XmlPullParser.START_TAG: { if ("id".equals(nodeName)) { id=xmlPullParser.nextText(); } else if ("name".equals(nodeName)) { name=xmlPullParser.nextText(); } else if ("version".equals(nodeName)) { version=xmlPullParser.nextText(); } break; } case XmlPullParser.END_TAG: { if("app".equals(nodeName)) { Log.d("MainActivity","id is""+id); Log.d("MainActivity","name is"+name); Log.d("MainActivity","version is"+version); } break; } default: break;} eventType=xmlPullParser.next(); } } }
-
SAX解析:用法稍微复杂一点,但是语义更加清晰
public class ContentHandler extends DefaultHandler { private String nodeName; private StringBuilder id; private StringBuilder name; private StringBuilder version; @override public void startDocument() throws SAXException { id=new StringBuilder(); name=new StringBuilder(); version=new StringBuilder(); } @override public void startElements(String uri,String localName,String qName,Attributes attribute) throws SAXException { nodeName=localName; } @override public void characters(char[] ch,int start,int length) throws SAXException { 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,Sring qName) throws SAXException { if ("app".equals(localName)) { Log.d("ContentHandler","id is"+id.toString().trim()); Log.d("ContentHandler","name is"+name.toString().trim()); Log.d("ContentHandler","version is"+version.toString().trim()); id.setLength(0); name.setLength(0); version.setLength(0); } } @override public void endDocument() throws SAXException { super.endDocument(); } }
-
-
JSON格式的数据
-
JSONObject
private void parseJSONWithiJSONObject(String jsonData) { try { JSONArray jsonArray=new JSONArray(jsonData); for(int i=0;i<jsonArray.length();i++) { JSONObject jsonObject=jsonArray.getJSONObject(i); String id=jsonObject.getString("id"); String name=jsonObject.getString("name"); String version=jsonObject.getString("version"); Log.d("MainActivity","id is"+id); Log.d("MainActivity","name is"+name); Log.d("MainActivity","version is"+version); } catch (Exception e) { e.printStackTrace(); } }
-
GSON
//GSON没有被添加到Android官方的API中,需要在项目中添加GSON库的依赖 private void parseJSONWithGSON(String jsonData) { Gson gson=new Gson(); List<App> appList=gson.fromJson(jsonData,new TypeToken<List<app>>(){}.getType()); for (App app:appList) { Log.d("MainActivity","id is"+app.getId()); Log.d("MainActivity","name is"+app.getName()); } }
-
安卓访问网络服务器数据之http与数据解析
于 2024-01-29 15:59:02 首次发布
本文介绍了使用HttpURLConnection进行GET和POST请求的方法,以及使用OkHttp替代。同时详细讲解了XML的PULL解析方式(SAX)和JSON解析(Gson)在Android应用中的实现。
摘要由CSDN通过智能技术生成