MARC数据调用API接口代码示例

xiyuan29044 2017年06月24日 编目中心 6682次阅读 查看评论

为方便图书相关软件接入我们编目中心,在Z39.50基础上,特开发数据调用的Websevice接口,相比Z39.50,简单实用,只需要少量代码即可实现。

(该功能需要开通API帐号访问授权)

PHP代码(Json)

<?php
 /**
 * 检索marc数据
 *
 * @param string $uid
 *            用户名
 * @param string $pwd
 *            密码
 * @param string $search_type
 *            搜索字段:isbn、title
 * @param unknown $search_val
 *            搜索内容
 * @param number $cip_type
 *            是否接收CIP库数据(新书齐全,但质量不如标准库),默认为1,0:不使用CIP,1:在没有数据的情况下才使用该库,2:只套录CIP数据。
 * @param number $data_size
 *            最大返回数据(无论命中多少条),默认为1
 * @param string $is_json
 *            是否采用json输出方式,默认为true,true为json格式,false为xml格式。
 * @param string $is_parsing
 *            是否需要解析ISO2709格式位条目式文本式,false不解析,反之为true。
 * @return array marc数据
 */
    function getMarc($uid, $pwd, $search_type, $search_val, $cip_type = 1, $data_size = 1, $is_json = "true", $is_parsing = "true")
    {
        $url = "http://z39.91marc.cn/app/f/?"; // Api地址
        $param = array( // 参数组合
            "uid" => $uid,
            "pwd" => $pwd,
            "key" => $search_type,
            "value" => $search_val,
            "caifang" => $cip_type,
            "parsing" => $is_parsing,
            "json" => $is_json,
            "size" => $data_size
        );
        
        $url .= http_build_query($param);
        $marc_data = json_decode(file_get_contents($url), true);
        return $marc_data;
    }
?>


C#代码(XML)

string searchurl = "http://z39.91marc.cn/app/f/?";
string uid = System.Web.HttpUtility.UrlEncode("demo", Encoding.UTF8);    //用户名。
string pwd = System.Web.HttpUtility.UrlEncode("demo899", Encoding.UTF8);  //密码。
string caifang = "1";   //是否接收CIP库数据(新书齐全,但质量不如标准库),0:不使用CIP,1:在没有数据的情况下才使用该库,2:只套录CIP数据。
string key = "title";    //检索项,isbn :书号,title:书名,seriesname:丛书名。
string value = System.Web.HttpUtility.UrlEncode("Flex 4", Encoding.UTF8);  //检索词、关键字转码。
string size = "100";    //最大返回数据。
string parsing = "false";   //是否需要解析ISO2709格式位条目式文本式,false不解析,反之为true。
string json = "false";       //是否采用json输出方式,true为json格式,false为xml格式。
searchurl = searchurl + "uid=" + uid + "&pwd=" + pwd + "&caifang=" + caifang + "&key=" + key + "&value=" + value + "&parsing=" + parsing + "&json=" + json + "&size=" + size; //组合查询URL。

DataSet ds = new DataSet();
ds.ReadXml(searchurl);
string allmarc = "";
string marc = "";

int i;
for (i = 0; i <= ds.Tables[0].Rows.Count - 1; ++i)
{
	marc = ds.Tables[0].Rows[i][0].ToString();
	allmarc = allmarc + marc + "\r\n";
}

textBox1.Text = allmarc;


VB.NET代码(json)

'利用json.net开源免费控件实现
Imports Newtonsoft.Json
Imports Newtonsoft.Json.Linq
'记得引用System.Web噢
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim searchurl As String = "http://z39.91marc.cn/app/f/?"
        Dim uid As String = System.Web.HttpUtility.UrlEncode("demo", Encoding.UTF8) '用户名。
        Dim pwd As String = System.Web.HttpUtility.UrlEncode("demo899", Encoding.UTF8) '密码。
        Dim caifang As String = "1" '是否接收CIP库数据(新书齐全,但质量不如标准库),0:不使用CIP,1:在没有数据的情况下才使用该库,2:只套录CIP数据。
        Dim key As String = "isbn" '检索项,isbn :书号,title:书名,seriesname:丛书名。
        Dim value As String = System.Web.HttpUtility.UrlEncode("9787805952109", Encoding.UTF8) '检索词、关键字转码。
        Dim size As String = "100" '最大返回数据。
        Dim parsing As String = "true" '是否需要解析ISO2709格式位条目式文本式,false不解析,反之为true。
        Dim json As String = "true" '是否采用json输出方式,true为json格式,false为xml格式。
        searchurl = searchurl & "uid=" & uid & "&pwd=" & pwd & "&caifang=" & caifang & "&key=" & key & "&value=" & value & "&parsing=" & parsing & "&json=" & json & "&size=" & size '组合查询URL。
        Dim josn As String = GetHtmCode(searchurl, "utf-8")   '获取网页数据
        
        Dim dt As DataTable
        dt = Json2Dtb(josn)
        DataGridView1.DataSource = dt   '数据加载到DataGridView1
End Sub  
' 利用json转换为datatable数据表
Public Function Json2Dtb(ByVal json As String) As DataTable 
    Dim obj As New JObject
    Dim data As String
    obj = JObject.Parse(json)
    Dim objdata As New JObject  '数据的json
    If obj("records") <> "0" Then   '0为没返回数据,失败,反之>=1
        data = obj("data").ToString
        Json2Dtb = JsonConvert.DeserializeObject(Of DataTable)(data)
    Else
        Json2Dtb = Nothing
    End If
End Function
'获取网页的HTML源码
Public Function GetHtmCode(ByVal httpURL As String, ByVal CodeFormat As String) As String
        Dim httpReq As System.Net.HttpWebRequest
        Dim objResponse As System.Net.HttpWebResponse
        Try
            httpReq = CType(System.Net.HttpWebRequest.Create(httpURL), System.Net.HttpWebRequest)
            httpReq.Method = "GET"
            httpReq.Timeout = 10 * 1000   '十秒超时
            objResponse = CType(httpReq.GetResponse, System.Net.HttpWebResponse)
            Dim MySR As New System.IO.StreamReader(objResponse.GetResponseStream, System.Text.Encoding.GetEncoding(CodeFormat))
            GetHtmCode = MySR.ReadToEnd
            MySR.Close()
        Catch ex As System.Net.WebException
            GetHtmCode = Err.Description
        End Try
End Function


« 上一篇 下一篇 » xiyuan29044原创文章,转载请注明出处! 标签: API接口 获取数据

相关日志:

说两句吧:

必填

选填

选填

登录编目中心
用户名:
密 码:
书目检索
  • 数据库:
  • 检索项:
  • 检索词:
  • 网站分类
    标签列表
    最新留言
    控制面板
    您好,欢迎到访网站!
      [查看权限]
    搜索
    文章归档
    网站收藏
    友情链接
    • 订阅本站的 RSS 2.0 信息聚合