Get方式请求并获取XML数据格式

来源:互联网 发布:mac上如何查找app路径 编辑:程序博客网 时间:2024/05/18 00:23
package cn.test;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.net.URI;import java.net.URISyntaxException;import java.util.List;import org.apache.http.HttpEntity;import org.apache.http.HttpResponse;import org.apache.http.HttpStatus;import org.apache.http.client.ClientProtocolException;import org.apache.http.client.HttpClient;import org.apache.http.client.methods.HttpGet;import org.apache.http.impl.client.DefaultHttpClient;import org.apache.log4j.Logger;import org.apache.log4j.PropertyConfigurator;import org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.Element;import cn.utils.xmlUtils;public class WriteResponse2XML{public static void main(String[] args) throwsURISyntaxException, ClientProtocolException, IOException, DocumentException{//Get请求的参数final String URL = "http://search.ifeng.com/searchxml";final String PARAM = "q=三星&df=2013-7-1&n=3";//XML文件输出的位置final String FILE_PATH = "./XML/response.xml";//初始化log4jLogger log = Logger.getLogger(WriteResponse2XML.class);PropertyConfigurator.configure("./conf/log4j.properties");HttpClient httpClient = new DefaultHttpClient();//Get请求HttpGet httpGet = new HttpGet(URL);//拼装字符串httpGet.setURI(new URI(httpGet.getURI().toString()+"?"+PARAM));//System.out.println(new URI(httpGet.getURI().toString()));//发请求HttpResponse response = httpClient.execute(httpGet);if(response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {HttpEntity entity = response.getEntity();BufferedReader br = new BufferedReader(new InputStreamReader(entity.getContent(),"UTF-8"));//将获取的response写入到xml文件中(不是必要步骤)Document document = xmlUtils.getDocument(br);xmlUtils.document2XML(document, FILE_PATH);//解析XML文件,并验证其中的关键值Element rootElement = document.getRootElement();//获取list节点,验证参数n是否正确List<Element> list = rootElement.elements("item");if(3 == list.size()) {log.info("请求中参数n=3,也就是每页有3条记录。实际返回的response中也是每页有3条记录。");}else {log.info("请求中参数n=3,也就是每页有3条记录。实际返回的response中也是每页有"+list.size()+"条记录,与请求参数不符");}for(int i=0; i<list.size(); i++) {String title = list.get(i).element("Doc_Title").getText();//System.out.println(title);//验证参数q是否正确,q是查找的关键字if(title.contains("三星")) {log.info("请求中参数q=三星,也就查找的关键字。实际返回的第"+(i+1)+"条记录中包含该关键字。");}else {log.info("第"+(i+1)+"条记录中没有包含该关键字");}}}else {log.error("请求失败,状态码为:"+response.getStatusLine().getStatusCode());}httpClient.getConnectionManager().shutdown();}}

返回的response

<?xml version="1.0" encoding="UTF-8"?><list>   <numFound>34,161</numFound>    <max_page>11,387</max_page>    <QTime>343</QTime>    <item>     <Doc_Date><![CDATA[2012-03-21]]></Doc_Date>      <Doc_Title><![CDATA[宁波三星电气股份有限公司关于重大经营合同中标的提示性公告]]></Doc_Title>      <Doc_Url><![CDATA[http://finance.ifeng.com/roll/20120321/5779454.shtml]]></Doc_Url>   </item>    <item>     <Doc_Date><![CDATA[2012-03-21]]></Doc_Date>      <Doc_Title><![CDATA[时尚潮流造型 小巧安卓机 三星I579再爆新低]]></Doc_Title>      <Doc_Url><![CDATA[http://tech.ifeng.com/digi/mobile/price/detail_2012_03/21/13329289_0.shtml]]></Doc_Url>   </item>    <item>     <Doc_Date><![CDATA[2012-03-21]]></Doc_Date>      <Doc_Title><![CDATA[ST三星:独立董事关于控股股东及其他关联方占用资金情况的说明及独立意见]]></Doc_Title>      <Doc_Url><![CDATA[http://finance.ifeng.com/stock/gsgg/20120321/5777632.shtml]]></Doc_Url>   </item> </list>


原创粉丝点击