- 浏览: 915518 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
天天来注册:
...
try catch finally 用法 -
tadpole_java:
谢谢你的分享。
二十七、Qt数据库(七)QSqlRelationalTableModel(转) -
359449749tan:
android之EditText文本监听(addTextChangedListener) -
michael_wang:
人过留名 多谢分享
Android NOtification 使用 -
wilsonchen:
wangqi0614 写道这个删除是删除所有的把?能不能值删除 ...
Android的SharedPreferences保存与删除数据简单实例
1、处理post请求
public class HttpGet extends Activity {
private boolean isAuthenticated;
private ArrayList<BasicNameValuePair> pairs;
private DefaultHttpClient httpclient;
private HttpPost httppost;
private InputStream content;
private String returnConnection;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView tv=new TextView(this);
Map vars=new HashMap();
vars.put("mydata", "Hello,Android");
ParameterHttp("http://5billion.com.cn/post.php",vars);
doPost();
tv.setText(this.returnConnection);
this.setContentView(tv);
}
private void ParameterHttp(String url, Map vars) {
this.httpclient=new DefaultHttpClient();
this.httppost=new HttpPost(url);
this.pairs=new ArrayList();
if(vars!=null){
Set keys=vars.keySet();
for(Iterator i=keys.iterator();i.hasNext();){
String key=(String)i.next();
pairs.add(new BasicNameValuePair(key,(String) vars.get(key)));
}
}
}
private String doPost() {
try{
UrlEncodedFormEntity p_entity=new UrlEncodedFormEntity(pairs,"ISO-8859-1");
httppost.setEntity(p_entity);
HttpResponse response=httpclient.execute(httppost);
HttpEntity entity=response.getEntity();
content=entity.getContent();
this.returnConnection=convertStreamToString(content);
Log.d("HttpPostConnection",">>>>>>>>>"+returnConnection);
int status_code=response.getStatusLine().getStatusCode();
if(status_code>=300){
this.isAuthenticated=false;
}else{
this.isAuthenticated=true;
}
}catch (Exception e) {
// TODO: handle exception
}
return returnConnection;
}
private static String convertStreamToString(InputStream is) {
/*
* To convert the InputStream to String we use the BufferedReader.readLine()
* method. We iterate until the BufferedReader return null which means
* there's no more data to read. Each line will appended to a StringBuilder
* and returned as String.
*/
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
StringBuilder sb = new StringBuilder();
String line = null;
try {
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return sb.toString();
}
3、SAX解析xml
public class HttpGet extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView tv=new TextView(this);
try{
URL url=new URL("http://5billion.com.cn/example.xml");
//从SAXParserFactor获取SAXParser
SAXParserFactory spf=SAXParserFactory.newInstance();
SAXParser sp=spf.newSAXParser();
//从SAXParser获取XMLReader
XMLReader xr=sp.getXMLReader();
//创建文明自己的内容处理器
ExampleHandler myExampleHandler=new ExampleHandler();
//用内容处理器处理XMLReader
xr.setContentHandler(myExampleHandler);
//XMLReader获取xml文件
xr.parse(new InputSource(url.openStream()));
//用ExampleHandle解析XML中数据
ParsedExampleDataSet parsedExampleDataSet=myExampleHandler.getParsedData();
//将解析的结果显示到gui
tv.setText(parsedExampleDataSet.toString());
}catch (Exception e) {
tv.setText(e.getMessage());
}
this.setContentView(tv);
}
class ExampleHandler extends DefaultHandler {
private boolean in_outertag=false;
private boolean in_innertag=false;
private boolean in_mytag=false;
private ParsedExampleDataSet myParsedExampleDataSet=new ParsedExampleDataSet();
public ParsedExampleDataSet getParsedData(){
return this.myParsedExampleDataSet;
}
@Override
public void characters(char[] ch, int start, int length)
throws SAXException {
if(this.in_mytag){
String str=new String(ch,start,length);
myParsedExampleDataSet.setExtractedString(str);
Log.v("ParsingXML","Characters():"+str);
}
}
@Override
public void startDocument() throws SAXException {
this.myParsedExampleDataSet=new ParsedExampleDataSet();
Log.v("ParsingXML","startDocument");
}
@Override
public void endDocument() throws SAXException {
Log.v("ParsingXML","endDocumnet");
}
@Override
public void startElement(String uri, String localName, String name,
Attributes attributes) throws SAXException {
if(localName.equals("outertag")){
this.in_outertag=true;
}else if(localName.equals("innertag")){
this.in_innertag=true;
}else if(localName.equals("mytag")){
this.in_mytag=true;
}else if(localName.equals("tagwithnumber")){
String attrValue=attributes.getValue("thenumber");
int i=Integer.parseInt(attrValue);
this.myParsedExampleDataSet.setExtractedInt(i);
}
Log.v("ParsingXML","StartElement():"+localName);
}
@Override
public void endElement(String uri, String localName, String name)
throws SAXException {
if(localName.equals("outertag")){
this.in_outertag=false;
}else if(localName.equals("innertag")){
this.in_innertag=false;
}else if(localName.equals("mytag")){
this.in_mytag=false;
}else if(localName.equals("tagwithnumber")){
//nothing to do
}
Log.v("ParsingXML","endElement():"+localName);
}
}
class ParsedExampleDataSet {
private String extractedString=null;
private int extractedInt=0;
public void setExtractedString(String extractedString) {
this.extractedString = extractedString;
}
public void setExtractedInt(int extractedInt) {
this.extractedInt = extractedInt;
}
@Override
public String toString() {
// TODO Auto-generated method stub
return "String from XML="+this.extractedString+"\n Number from XML="+this.extractedInt;
}
}
}
public class HttpGet extends Activity {
private boolean isAuthenticated;
private ArrayList<BasicNameValuePair> pairs;
private DefaultHttpClient httpclient;
private HttpPost httppost;
private InputStream content;
private String returnConnection;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView tv=new TextView(this);
Map vars=new HashMap();
vars.put("mydata", "Hello,Android");
ParameterHttp("http://5billion.com.cn/post.php",vars);
doPost();
tv.setText(this.returnConnection);
this.setContentView(tv);
}
private void ParameterHttp(String url, Map vars) {
this.httpclient=new DefaultHttpClient();
this.httppost=new HttpPost(url);
this.pairs=new ArrayList();
if(vars!=null){
Set keys=vars.keySet();
for(Iterator i=keys.iterator();i.hasNext();){
String key=(String)i.next();
pairs.add(new BasicNameValuePair(key,(String) vars.get(key)));
}
}
}
private String doPost() {
try{
UrlEncodedFormEntity p_entity=new UrlEncodedFormEntity(pairs,"ISO-8859-1");
httppost.setEntity(p_entity);
HttpResponse response=httpclient.execute(httppost);
HttpEntity entity=response.getEntity();
content=entity.getContent();
this.returnConnection=convertStreamToString(content);
Log.d("HttpPostConnection",">>>>>>>>>"+returnConnection);
int status_code=response.getStatusLine().getStatusCode();
if(status_code>=300){
this.isAuthenticated=false;
}else{
this.isAuthenticated=true;
}
}catch (Exception e) {
// TODO: handle exception
}
return returnConnection;
}
private static String convertStreamToString(InputStream is) {
/*
* To convert the InputStream to String we use the BufferedReader.readLine()
* method. We iterate until the BufferedReader return null which means
* there's no more data to read. Each line will appended to a StringBuilder
* and returned as String.
*/
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
StringBuilder sb = new StringBuilder();
String line = null;
try {
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return sb.toString();
}
3、SAX解析xml
public class HttpGet extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView tv=new TextView(this);
try{
URL url=new URL("http://5billion.com.cn/example.xml");
//从SAXParserFactor获取SAXParser
SAXParserFactory spf=SAXParserFactory.newInstance();
SAXParser sp=spf.newSAXParser();
//从SAXParser获取XMLReader
XMLReader xr=sp.getXMLReader();
//创建文明自己的内容处理器
ExampleHandler myExampleHandler=new ExampleHandler();
//用内容处理器处理XMLReader
xr.setContentHandler(myExampleHandler);
//XMLReader获取xml文件
xr.parse(new InputSource(url.openStream()));
//用ExampleHandle解析XML中数据
ParsedExampleDataSet parsedExampleDataSet=myExampleHandler.getParsedData();
//将解析的结果显示到gui
tv.setText(parsedExampleDataSet.toString());
}catch (Exception e) {
tv.setText(e.getMessage());
}
this.setContentView(tv);
}
class ExampleHandler extends DefaultHandler {
private boolean in_outertag=false;
private boolean in_innertag=false;
private boolean in_mytag=false;
private ParsedExampleDataSet myParsedExampleDataSet=new ParsedExampleDataSet();
public ParsedExampleDataSet getParsedData(){
return this.myParsedExampleDataSet;
}
@Override
public void characters(char[] ch, int start, int length)
throws SAXException {
if(this.in_mytag){
String str=new String(ch,start,length);
myParsedExampleDataSet.setExtractedString(str);
Log.v("ParsingXML","Characters():"+str);
}
}
@Override
public void startDocument() throws SAXException {
this.myParsedExampleDataSet=new ParsedExampleDataSet();
Log.v("ParsingXML","startDocument");
}
@Override
public void endDocument() throws SAXException {
Log.v("ParsingXML","endDocumnet");
}
@Override
public void startElement(String uri, String localName, String name,
Attributes attributes) throws SAXException {
if(localName.equals("outertag")){
this.in_outertag=true;
}else if(localName.equals("innertag")){
this.in_innertag=true;
}else if(localName.equals("mytag")){
this.in_mytag=true;
}else if(localName.equals("tagwithnumber")){
String attrValue=attributes.getValue("thenumber");
int i=Integer.parseInt(attrValue);
this.myParsedExampleDataSet.setExtractedInt(i);
}
Log.v("ParsingXML","StartElement():"+localName);
}
@Override
public void endElement(String uri, String localName, String name)
throws SAXException {
if(localName.equals("outertag")){
this.in_outertag=false;
}else if(localName.equals("innertag")){
this.in_innertag=false;
}else if(localName.equals("mytag")){
this.in_mytag=false;
}else if(localName.equals("tagwithnumber")){
//nothing to do
}
Log.v("ParsingXML","endElement():"+localName);
}
}
class ParsedExampleDataSet {
private String extractedString=null;
private int extractedInt=0;
public void setExtractedString(String extractedString) {
this.extractedString = extractedString;
}
public void setExtractedInt(int extractedInt) {
this.extractedInt = extractedInt;
}
@Override
public String toString() {
// TODO Auto-generated method stub
return "String from XML="+this.extractedString+"\n Number from XML="+this.extractedInt;
}
}
}
发表评论
-
android push
2011-11-16 15:24 1607所有技术的概要介绍,并讲解了android2.2的新功能C2D ... -
[Android UI界面] 怎么设置popupwindow动画效果?
2011-07-16 12:34 1120http://www.eoeandroid.com/threa ... -
android解析XML
2011-07-11 11:32 1874为移动设备构建 Java 应用程序 Michael ... -
对话框和浮动Activity
2011-07-06 12:07 956在Android中,我们可以通 ... -
升级android sdk时A folder failed to be renamed or moved 错误的解决
2011-06-28 09:22 1701Downloading Android SDK Tools, ... -
android push机制-C2DM
2011-06-27 16:54 1535http://bigcat.easymorse.com/?p= ... -
XML解析
2011-06-24 15:45 854HttpPost httpRequest=new HttpP ... -
android上传图片到服务器,求服务器那边和android的Activity的完整代码。
2011-06-22 12:30 3253服务器端servlet代码:public void doPos ... -
android HTTP 通信, XML 解析, 通过 Hander 实现异步消息处理 (1)
2011-06-08 16:44 1029介绍 在 Android 中与服务端做 HTTP 通信,解析 ... -
eclipse 中android中文doc配置
2011-05-13 14:39 982http://hi.baidu.com/huangbz321/ ... -
jesson.shen浅谈HTTP中实现UDP/TCP
2011-05-10 16:38 938http://350526.blog.51cto.com/34 ... -
android 网络编程
2011-05-04 19:54 781http://hi.baidu.com/lfcaolibin/ ... -
android解析xml文件的方式
2011-05-01 22:54 890http://hi.baidu.com/%B2%BD%C2%C ... -
android进程间通信:使用AIDL
2011-04-13 10:59 873http://blog.csdn.net/saintsword ... -
Android实现开机自动运行程序
2011-04-12 18:00 1128有些时候,应用需要在开机时就自动运行,例如某个自动从网上更新内 ... -
android 如何从sqlite读取数据到spinner下拉中显示
2011-04-12 14:56 5585import android.app.Activity; im ... -
Android的SharedPreferences保存与删除数据简单实例
2011-04-12 11:37 520441、创建SharedPreferences对象: Stri ... -
Android使用LayoutInflater动态加载布局和操作控件
2011-04-11 16:22 1002http://www.cnmsdn.com/html/2010 ... -
dialog
2011-04-08 18:32 855http://topic.csdn.net/u/2011031 ... -
Android NOtification 使用
2011-04-07 15:55 3851一、 Notification 简介 ...
相关推荐
首先,要使用SAX解析XML,我们需要创建一个实现`DefaultHandler`接口的类,这个类将包含处理XML事件的方法,如`startElement`、`endElement`和`characters`。例如: ```java public class MySaxHandler extends ...
这些库可以帮助我们发送GET或POST请求,并获取服务器响应的XML数据。 例如,使用`Volley`库发送GET请求获取XML数据: ```java RequestQueue queue = Volley.newRequestQueue(context); String url = ...
2. **构建网络请求**:使用HttpURLConnection创建一个GET或POST请求。以下是一个简单的GET请求示例: ```java URL url = new URL("http://example.com/xml_data.xml"); HttpURLConnection connection = ...
在Android中,我们可以使用多种方式解析XML,如DOM(Document Object Model),SAX(Simple API for XML)和Pull Parser。DOM解析整个XML文档到内存,适合小型文件;SAX是事件驱动,逐行解析,节省内存,适合大文件...
可能涉及的步骤包括设置URL,发送GET或POST请求,处理响应,以及错误处理。 3. Volley库:为了简化网络请求和数据解析,Android开发者经常使用Volley库。Volley提供了高效的网络通信,并且内置了XML解析支持,能...
在这个项目中,可能使用了iOS的NSXMLParser或Android的DefaultHandler来实现SAX解析,或者使用GDataXMLNode等库实现DOM解析。解析过程中,需要定义回调函数来处理开始元素、结束元素、字符数据等事件,将XML数据映射...
4. Android中异步处理XML数据,使用Handler-Looper更新UI。 5. Handler、Looper和Message的机制及它们在多线程通信中的作用。 理解并熟练掌握这些知识点,对于进行Web服务开发和Android应用的实现至关重要,尤其在...
开发者可以选择适合的方式解析XML响应,提取所需的数据。 6. **用户界面设计** 客户端应用的界面设计需要考虑到用户交互,如输入博客标题、内容、选择分类等功能。使用Android的布局管理器和控件,如EditText、...
SAX解析器适用于大型XML文档,按事件驱动方式逐个处理元素;DOM解析器则将整个XML文档加载到内存中形成树形结构,方便查询;Pull Parser是轻量级的解析器,适用于内存有限的设备。 3. **Protocol Buffers** ...
- **XML处理**:Android提供了SAXParser和DocumentBuilderFactory等类来解析XML。SAX适用于大文件的流式解析,而DOM则一次性加载整个XML文档,适合小文件。解析完成后,将XML节点转化为Java对象,比如实体类。 - **...
- 在Android端,可以使用SAX(Simple API for XML)解析器来解析XML数据,SAX是一种事件驱动的解析方式,适合处理大型XML文档,因为它只读取文档的一部分,内存占用较低。 5. **SAX解析**: - SAX解析器逐行读取...
如果是XML,可以使用DOM或SAX解析器。 ### JSON处理 在Android中,Gson库非常方便地处理JSON数据。例如,你可以定义一个Java类,映射JSON结构,然后通过`Gson().fromJson()`方法将JSON字符串转化为对象。 ```java ...
Android提供了多种解析XML的方式,如DOM(文档对象模型)、SAX(简单API for XML)和Pull解析器。DOM一次性加载整个XML文档,适用于小文件;SAX是事件驱动,只处理需要的部分,适合大文件;Pull解析器则是一种轻量级...
以下是一个使用HttpURLConnection发送POST请求的例子: ```java URL url = new URL("http://your-web-server.com/endpoint"); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn....
2. 数据解析:收到服务器返回的XML或JSON响应后,使用如DOM、SAX或Gson等解析库解析数据,将其转化为Java对象。 3. 显示数据:将解析后的数据绑定到UI元素,如ListView或RecyclerView上,显示给用户。 步骤四:异常...
通常,JSON数据会使用Gson或Jackson库,XML数据可能使用PullParser或SAX解析器。解析后的数据将作为列表项显示。 3. 异步处理:网络请求应在后台线程中进行,以免阻塞主线程导致应用无响应。可以使用AsyncTask、...
Android官方提供了一个XML Pull解析库,开发者可以通过调用next()方法,按需解析XML元素,控制权在开发者手中,适合流式处理XML数据。 在移动开发中,网络获取框架和XML解析工具的正确选择和使用,可以极大地提高...
服务器端通常会使用DOM、SAX或StaX解析接收到的XML数据。 在实际开发中,我们可能还会遇到权限问题,例如,从Android 6.0(API级别23)开始,应用需要在运行时请求访问网络的权限。另外,为了提升用户体验,我们...
通过研究“Android应用源码之(遍历Body)”的源码,开发者可以更好地理解Android应用如何处理网络请求,特别是在解析响应体时涉及的关键技术和最佳实践。这将有助于在实际项目中实现更高效、更安全的网络通信。
- **网络请求**:使用HttpURLConnection或OkHttp等库向服务器发起GET或POST请求,获取XML数据。 - **XML解析**:Android提供了两种主要的XML解析方式: - DOM解析:一次性加载整个XML文档到内存中,适合小型XML...