使用webservice 并通过sax动态解析xml
2011-05-26 23:47
375 查看
1.HttpGet方式:
首先定义一个url,访问这个url可以获得到xml
声明一个HttpGet,使用DefaultHttpClient获取HttpClient,发送HttpGet请求。得到一个HttpResponse。
取得response的status后,判断是否正常返回。
从response中获取返回的entity,利用entityutils将其转换为string。
下面就可以开始解析xml了
声明一个SAXParserFactory,使用newInstance获得一个SAXParserFactory类的对象
然后用这个factory获得一个SAXParser。使用XMLReader读取XML。这里需要定义一个继承自DefaultHandler类的类。
覆写DefaultHandler类的方法。我们利用这个类来解析XML。在XMLReader中绑定这个类(contentHandler)。
将需要解析的xml转换为inputSource:
StringReader sr = new StringReader(str);
InputSource is = new InputSource(sr);
使用XMLReader进行解析:parse。
2.HttpPost方式
与上面的方法基本一致,只是请求的参数不能通过?&进行传递,需要封装在NameValuePair中,然后通过request.setEntity对其进行编码即可。
如下:
List<String> list = null; String url = "http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx/getRegionProvince"; HttpGet get = new HttpGet(url); try { HttpResponse httpResponse = new DefaultHttpClient().execute(get); int responseCode = httpResponse.getStatusLine().getStatusCode(); if (responseCode == 200) { HttpEntity entity = httpResponse.getEntity(); String result = EntityUtils.toString(entit adcc y); SAXParserFactory spf = SAXParserFactory.newInstance(); SAXParser sp = spf.newSAXParser(); XMLReader xr = sp.getXMLReader(); WeatherHandler wh = new WeatherHandler(); xr.setContentHandler(wh); StringReader reader = new StringReader(result); InputSource is = new InputSource(reader); xr.parse(is); this.listProvince = wh.getList(); return list; } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); }
首先定义一个url,访问这个url可以获得到xml
声明一个HttpGet,使用DefaultHttpClient获取HttpClient,发送HttpGet请求。得到一个HttpResponse。
取得response的status后,判断是否正常返回。
从response中获取返回的entity,利用entityutils将其转换为string。
下面就可以开始解析xml了
声明一个SAXParserFactory,使用newInstance获得一个SAXParserFactory类的对象
然后用这个factory获得一个SAXParser。使用XMLReader读取XML。这里需要定义一个继承自DefaultHandler类的类。
覆写DefaultHandler类的方法。我们利用这个类来解析XML。在XMLReader中绑定这个类(contentHandler)。
将需要解析的xml转换为inputSource:
StringReader sr = new StringReader(str);
InputSource is = new InputSource(sr);
使用XMLReader进行解析:parse。
2.HttpPost方式
与上面的方法基本一致,只是请求的参数不能通过?&进行传递,需要封装在NameValuePair中,然后通过request.setEntity对其进行编码即可。
如下:
List<NameValuePair> params = new ArrayList<NameValuePair>(); httpPost.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));
相关文章推荐
- 通过SaxReader解析xml配置文件(上班第一天)
- 安卓使用DOM,SAX,PULL解析xml,安卓写入xml文件
- Java乔晓松-使用SAX,DOM,pull解析XML文件以及pull解析生成xml文件
- 使用Java自带SAX工具解析XML
- android学习——使用SAX、DOM 和 PULL 解析xml文件,及使用pull生成xml文件
- 使用JAXP进行SAX解析(XMLReaderFactory、XMLReader 、SAXParserFactory与SAXParser)
- 使用jaxp对比xml进行SAX解析
- 使用SAX和dom4j解析XML文档
- 采用DOM4J中的SAXReader解析webservice返回的XML文件
- 使用JAXP进行SAX解析(XMLReaderFactory、XMLReader 、SAXParserFactory与SAXParser)
- android_xml解析之 使用SAX读取XML文件
- 使用JAXP进行SAX解析(XMLReaderFactory、XMLReader 、SAXParserFactory与SAXParser)
- 通过SAX和PULL解析XML
- JAVA调用返回XML格式数据的WebService,并通过XPath解析XML的应用
- 通过webservice提交xml数据以及soap协议的使用
- Android 使用SAX或者DOM或者pull解析XML文件
- iOS使用GData对webService进行解析xml
- [libexpat]_[XML处理]_[C/C++使用libexpat库以数据流(SAX模型)的方式读取(解析)大XML文件]
- 使用JAXP进行SAX解析(XMLReaderFactory、XMLReader 、SAXParserFactory与SAXParser)
- 使用JAXP进行SAX解析(XMLReaderFactory、XMLReader 、SAXParserFactory与SAXParser)