SRU/SRW协议的异构库检索详解(一) _SRU

SRW/SRU:SRW(Search/Retrieve for the Web)和SRU(Search/Retrieve URL Service)
这两者是针对Web的信息检索协议,利用Web服务的架构,实现了Z39.50的一些基本服务。是ZING的核心功能。SRW使用HTTP与SOAP的无状态通信,采用XML作为信息传输编码,也可以单纯使用URL传递查询请求,用WSDL来定义Z39.50传输的格式信息,检索结果也以XML格式输出。而SRU只能通过URL参数方式提交检索请求,不支持完整的SOAP消息包(指支持SOAP消息报中的内容序列)。

它主要包括SRW/U、CQL、Zoom、ez3950和ZeeRex五个部分。

 

  基于SRU开发接口的检索实现:

  


public class SruSearch { private static String SERVICE_HOST="your_servicehost";//host URL private static String NETDATA_URL="http://your_servicehost/sru/XXXX.ashx?operation=your_method&query=keyword&otherparameter ";//data URL } //调用data URL 生成并返回InputStream public static InputStream getSoapInputStream(String url) { InputStream inputStream=null; try { URL urlObj=new URL(url); URLConnection urlconn=urlObj.openConnection(); urlconn.setRequestProperty("host", SERVICE_HOST); urlconn.connect(); inputStream=urlconn.getInputStream(); } catch (MalformedURLException e) { // TODO: handle exception e.printStackTrace(); } catch (IOException e) { // TODO: handle exception e.printStackTrace(); } return inputStream; } //采用Jdom方式生成xml文档 public static Document getProvinceCode(String netXMLDataURL) { Document document=null; DocumentBuilderFactory documentBF=DocumentBuilderFactory.newInstance(); documentBF.setNamespaceAware(true); try { DocumentBuilder documentB=documentBF.newDocumentBuilder(); InputStream inputStream=getSoapInputStream(netXMLDataURL); document=documentB.parse(inputStream); inputStream.close(); } catch (DOMException e) { // TODO: handle exception e.printStackTrace(); return null; } catch (ParserConfigurationException e) { // TODO: handle exception e.printStackTrace(); return null; } catch (IOException e) { // TODO: handle exception e.printStackTrace(); return null; } catch (SAXException e) { // TODO Auto-generated catch block e.printStackTrace(); return null; } return document; }

剩下的工作就是解析XML文档并显示了,可以参考我对于xml文档创建与解析的整理博文

 

你可能感兴趣的:(SRU/SRW协议的异构库检索详解(一) _SRU)