首页 > 帮助中心 > 如何使用自动化接口

如何使用自动化接口


    为了使出版商、信息服务机构等能够将与DOI有关的业务嵌入自动化系统(如编辑出版平台、图书馆自动化系统等)中,中文DOI系统提供了必要的自动化系统接口,包括:
1、批处理文件提交接口
2、OpenURL接口


    中文DOI还将继续开发新的自动化系统接口,使更多的服务可以通过这些接口嵌入用户的自动化流程中。


通过接口提交批处理文件

    中文DOI系统除了提供在线的批量上传文件功能以外,也提供了通过HTTP协议批量上传的机器接口,第三方平台可以调用此接口,将注册/修改的XML文件、DOI/元数据查询的txt文件,自动批量上传至中文DOI系统,实现的功能与会员系统的批处理操作相同。
如果用户需要使用这个接口,请 与我们联系 ,获取相应的程序包。

程序包使用方法

使用此接口程序包的具体步骤包括:
    1、引入chinadoiIF.jar、commons-httpclient-3.1.jar、commons-codec-1.3.jar、commons-logging.jar、jdom-1.0.jar、wsdl4j-1.6.1.jar、xfire-all-1.2.6.jar;
    2、导入包cn.chinadoi.api.action.*;
    3、调用cn.chinadoi.api.action.UploadFile的方法,参数及其返回值说明如下所示:

    (1)上传DOI注册用XML文件到中文DOI网站

方法 参数 说明 返回值
public UploadResult upload(String filePath, String userName,String password, int oprType); filePath 要上传的文件的全路径(如果上传的是单个文件,全路径需包括文件名;如果是文件夹,只需给出文件夹的本地路径)

返回值为如下列举返回结果其中之一:
文件上传成功;
文件名、目录名或卷标语法不正确;
请输入文件名称;
您输入的文件名含有非法字符;
已有同名文件夹;
文件重命名错误请与管理员联系或者重新上传;
插入记录有错误请与管理员联系;
文件不存在;
服务器连接失败。

username 中文DOI系统账号的用户名
password 中文DOI系统账号的密码
oprType

操作类型,取值如下:
1为“批量DOI查询”
2为“批量元数据查询”
3为“追加数据”
4为“修改数据”


    (2)实时查询DOI注册结果
方法 参数 说明 返回值
public DoiRegResult getDoiRegResult(String fileName, String userName, String password); fileName upload方法返回的newFileName,即上传以后系统换成的文件名

DoiRegResult类:
String queryMsg:会有如下几种错误信息:
“查询成功”
“该文件不存在或者该用户没有权限查看该文件”
“用户名或密码错误”
String userName:中文DOI系统账号的用户名
String oldFileName:用户上传的文件名
String newFileName:上传以后系统换成的文件名
String date:文件提交时间
String type:操作类型,取值如下:
1:“批量DOI查询”
2:“批量元数据查询”
3:“追加数据”
4:“修改数据”
String state:上传文件的处理状态:
“未审核”
“已完成”
“不合格”
“正在处理”
“出现异常”
String completeDate:处理完成时间
String resultFileUrl:结果文件地址,结果文件用于显示处理的DOI数量和不合格时的错误信息。
String resultFileText:结果文件内容。

userName 中文DOI系统账号的用户名
password 中文DOI系统账号的密码
oprType

操作类型,取值如下:
1为“批量DOI查询”
2为“批量元数据查询”
3为“追加数据”
4为“修改数据”


代码示例

/**此例将“D:/unitTest/add”路径下的多个注册文件上传至www.chinadoi.cn,操作类型为3(追加数据),并假设返回的其中一个系统文件名为120120508131801234.xml*/
import cn.chinadoi.api.action.UploadFile;
import cn.chinadoi.api.dto.UploadResult;
import cn.chinadoi.manage.webservice.dto.DoiRegResult;

public class Test {

  public static void main(String[] args) {
    // 测试上传
    testUpload("D:/unitTest/add ");

    //测试实时查询DOI注册结果,假设文件名为120120508131801234.xml
    testGetDoiRegResult("120120508131801234.xml");
  }
  /**
  * 测试上传
  */
  private static void testUpload(String fileName) {

    UploadFile uploadFile = new UploadFile();
    UploadResult result = uploadFile.upload(fileName, "username", "password", 3);
    System.out.println(result.getUploadState());
    for (String file : result.getNewFileNames()) {
    System.out.println(file);
    }
  }
  /**
  * 测试查询
  */
  private static void testGetDoiRegResult(String fileName) {

    UploadFile uploadFile = new UploadFile();
    DoiRegResult result = uploadFile.getDoiRegResult(fileName, "username", "passoword");
    System.out.println(result.getQueryMsg());
    System.out.println(result.getUserName());
    System.out.println(result.getOldFileName());
    System.out.println(result.getNewFileName());
    System.out.println(result.getDate());
    System.out.println(result.getType());
    System.out.println(result.getState());
    System.out.println(result.getCompleteDate());
    System.out.println(result.getResultFileUrl());
    System.out.println(result.getResultFileText());
  }
}


通过OpenURL协议查询/定位
    该功能是中文DOI提供的OpenURL解析器,可以接受符合OpenURL 0.1 规范的OpenURL请求,并自动向请求的计算机系统返回查询结果,或者重定向到资源的链接地址。


功能描述


1、必要的查询条件


用户的计算机向中文DOI发出OpenURL请求时,需要提供必要的查询条件,包括以下条件的组合:


  1. 1.第一作者
  2. 2.文章标题
  3. 3.第一作者+ISSN/CN
  4. 4.第一作者+期刊全称
  5. 5.首页页码+ISSN/CN
  6. 6.首页页码+期刊全称
  7. 7.DOI

2、用户账号信息


    在用户的计算机向中文DOI发出的OpenURL请求中,还需要包含有效的中文DOI系统的用户名/密码,否则系统将不处理OpenURL请求,并提示用户登录系统。


3、系统返回的结果形式


    根据用户请求的参数和处理结果,系统可以返回多种形式的结果:


  1. 1.当查询结果为一条时,将用户计算机重定向到DOI注册的URL地址;
  2. 2.当查询结果多于一条时,显示符合查询条件的查询结果列表,每次最多显示或返回命中的前20条结果;
  3. 3.用户要求不重定向到URL地址时,以XML格式返回DOI元数据;
  4. 4.未查询到结果时,向用户返回信息进行说明。

例子
定位到期刊论文:
    查询请求:
http://www.chinadoi.cn/openurl.do?pid=wf:wf&au=%E9%98%8E%E6%81%A9%E8%8D%A3&multihit=false
查询期刊论文元数据:
    查询请求:
http://www.chinadoi.cn/openurl.do?pid=wf:wf&id=doi:10.3773/j.issn.1005-264x.2008.01.001&noredirect=
返回多条查询结果:
    查询请求:
http://www.chinadoi.cn/openurl.do?pid=wf:wf&au=%E6%9D%8E&issn=11-2442/N&multihit=true&noredirect=

详细规范
1、 OpenURL参数定义:
1) 第一作者: auinit
2) 文章标题: atitle
3) ISSN/CN : issn
4) 期刊全称: title
5) 首页页码: spage
6) DOI : id:doi
7) 模糊查询选项:multihit
模糊查询,可返回多条结果multihit=true
模糊查询,只返回一条最接近的结果:multihit=false
精确查询,可返回多条结果: Multihit=exact
8) 重定向选项:noredirect。该变量存在时,不做重定向处理。系统默认状态为:
查询结果为单条,则重定向到DOI对应的URL中;
查询结果为多条,则显示查询结果表单页面;
9) 用户账户信息:pid=用户名:密码
10) 卷:volume
11) 期:issue
12) 年:date

2、 返回结果的格式
1) 查询到结果,不重定向时,系统返回XML格式数据,如:
<?xml version="1.0" encoding="UTF-8" ?>
- <chinesedoi_result version=" 1.0.0">
- <query_result>
- <body>
- <query>
- <journal>
- <journal_metadata>
<full_title>北京大学学报自然科学版</full_title>
<issn media_type="print">0479-8023</issn>
<cn media_type="print">11-2442/N</cn>
- <doi_data>
<doi />
<resource />
</doi_data>
</journal_metadata>
- <journal_issue>
- <journal_volume>
<volume>35</volume>
- <doi_data>
<doi />
<resource />
</doi_data>
</journal_volume>
<issue>06</issue>
</journal_issue>
- <journal_article>
- <titles>
<title>活动断层分段研究</title>
</titles>
- <titles>
<title>Study on Segmentation of Active Faults</title>
</titles>
<contributor>李树德</contributor>
- <doi_data>
<doi>10.3321/j.issn:0479-8023.1999.06.bjdxxb990607</doi>
- <resource>
- <![CDATA[
http://doi.wanfangdata.com.cn/10.3321/j.issn:0479-8023.1999.06.bjdxxb990607
]]>
</resource>
</doi_data>
- <pages>
<first_page />
</pages>
</journal_article>
</journal>
- <journal>
</query>
</body>
</query_result>
</chinesedoi_result>

2)未查询到结果,返回的XML格式,如:

未查询到结果时,系统向用户返回信息进行说明,返回结果为xml,如:
<message>
    <info> 没有查询到对应的元数据</info>
  </message>


3)查询请求格式错误时,返回的XML格式:

当用户查询条件不符合 查询条件 参数要求 时,则转到错误提示页面。错误提示页面为xml结构。如:
<message>
     <error> 用户名、密码无效</error>
  </message>