
如何使用自动化接口
为了使出版商、信息服务机构等能够将与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 |
操作类型,取值如下: |
(2)实时查询DOI注册结果
方法 | 参数 | 说明 | 返回值 |
public DoiRegResult getDoiRegResult(String fileName, String userName, String password); | fileName | upload方法返回的newFileName,即上传以后系统换成的文件名 |
DoiRegResult类: |
userName | 中文DOI系统账号的用户名 | ||
password | 中文DOI系统账号的密码 | ||
oprType |
操作类型,取值如下: |
代码示例
/**此例将“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请求,并自动向请求的计算机系统返回查询结果,或者重定向到资源的链接地址。
功能描述
用户的计算机向中文DOI发出OpenURL请求时,需要提供必要的查询条件,包括以下条件的组合:
- 1.第一作者
- 2.文章标题
- 3.第一作者+ISSN/CN
- 4.第一作者+期刊全称
- 5.首页页码+ISSN/CN
- 6.首页页码+期刊全称
- 7.DOI
2、用户账号信息
在用户的计算机向中文DOI发出的OpenURL请求中,还需要包含有效的中文DOI系统的用户名/密码,否则系统将不处理OpenURL请求,并提示用户登录系统。
3、系统返回的结果形式
根据用户请求的参数和处理结果,系统可以返回多种形式的结果:
- 1.当查询结果为一条时,将用户计算机重定向到DOI注册的URL地址;
- 2.当查询结果多于一条时,显示符合查询条件的查询结果列表,每次最多显示或返回命中的前20条结果;
- 3.用户要求不重定向到URL地址时,以XML格式返回DOI元数据;
- 4.未查询到结果时,向用户返回信息进行说明。
例子
定位到期刊论文:
查询请求:
http://www.chinadoi.cn/chinadoi-manage/openurl.do?pid=wf:wf&au=%E9%98%8E%E6%81%A9%E8%8D%A3&multihit=false
查询期刊论文元数据:
查询请求:
http://www.chinadoi.cn/chinadoi-manage/openurl.do?pid=wf:wf&id=doi:10.3773/j.issn.1005-264x.2008.01.001&noredirect=
返回多条查询结果:
查询请求:
http://www.chinadoi.cn/chinadoi-manage/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>