陈氏剑郑冬霞:关于OpenURL的问题

来源:百度文库 编辑:九乡新闻网 时间:2024/04/29 09:04:41
你写了一个HTTP下载ASCII文件的东西。
看看吧。

另外,CInternetSession能自动判断超时,不用你设置TIMER


UINT   CHttpSession::httpGet(const   CString   &sUrl,CString   &sHtml)
{
int   nRead   =   0;
char   Buffer[1024];
DWORD   dwHttpStatus;
try
{
CInternetSession   session(
NULL,
1,
                                                INTERNET_OPEN_TYPE_PRECONFIG);


DWORD   dwFlags   =   INTERNET_FLAG_TRANSFER_ASCII|INTERNET_FLAG_EXISTING_CONNECT|INTERNET_FLAG_RELOAD;


CHttpFile*   pHttpFile   =   (CHttpFile*)session.OpenURL(sUrl,1,dwFlags);


if   (pHttpFile)  
{
if   (pHttpFile-> QueryInfoStatusCode(dwHttpStatus)==0)
return   0;
if(dwHttpStatus   > =   200   &&   dwHttpStatus <   300)
{
do  
{
nRead   =   pHttpFile-> Read(Buffer,   1023);
if   (nRead   !=   0)  
{
Buffer[nRead]   =   0;
sHtml   +=   Buffer;
}  
}   while   (nRead   !=   0);
}
}
}
catch   (CInternetException*   e)  
{
e-> Delete();
}  
return   dwHttpStatus;

OPENURL  

2007-09-04 12:13:06|  分类: 默认分类 |  标签: |字号大中小 订阅

 1. OpenUrl概述


OpenURL简介
OpenURL定义了一种在WEB服务之间传递信息的机制,是一套应用于WEB上超链接的标准陈述语法,由一组已定义好的标识组成。网络上的各个数据库出版商只要遵照此机制,就可以解析信息提供源(Source)所传送的要求,而信息提供者(Target)也可经由此规范,对服务提供者送出深度链接服务的要求。
OpenUrl与传统链接的区别

上下文相关性
传统链接:传统的链接目标是预先定义好的、静态的、直接指向目标,因此是上下无关的。
OpenURL:OpenURL链接是一个挂接点,将当前的上下文环境提交给链接服务器,由链接服务器动态计算出目标链接、与使用者的需求是相关的,因此是上下文相关的。

灵活性
传统链接:传统链接描述的是具体目标,往往是一对一,其结果受链接源限制,不能实现一次性对多个数据源的统一检索。
OpenURL:在OpenURL方式中,通过链接服务器可将服务类型进行扩展、可实现一次性对多个数据源的统一检索。

可维护性
传统链接:传统链接方式中,一旦目标发生变化,每个链接点都要进行更新维护,若维护人员未能及时更新,往往造成许多失效链接,因此传统的链接方式维护工作量比较大。
OpenURL:OpenURL方式中由于链接服务器是根据元数据动态产生目标链接的,只要目标的基本URL不发生改变,内部数据的变动不会影响链接的准确性,因此,大大减少了维护的工作量。


2. OpenUrl语法构成


OpenURL ::= BASE-URL ‘?’ QUERY
BASE-URL(基础URL):OpenURL解析服务器的url地址。
QUERY(查询):对象源数据及其提供者描述。如果查询包括几个检索条件,则各个条件之间用&来连接。例如要查询的内容包括Title、Data等值,则查询字符串应该为Title=化学&Data=1982。参数部分请参考OpenUrl参数传递
[img,24,24]file:///C:/DOCUME~1/qu/LOCALS~1/Temp/ksohtml/wps_clip_image1.png[/img]
注意
如果参数的值使用中文字符,那么需要将参数值转化为url的16进制编码。


QUERY ::= DESCRIPTION (‘&&’DESCRIPTION):QUERY由一个或多个DESCRIPTION组成。
DESCRIPTION ::= (ORIGIN-DESCRIPTION‘&’)?OBJECT-DESCRIPTION | OBJECT-DESCRIPTION(‘&’ORIGIN-DESCRIPTION)?:每个DESCRIPTION由ORIGIN-DESCRIPTION和OBJECT-DESCRIPTION两个部分组成。
ORIGIN-DESCRIPTION:传递元数据的源端系统信息。
OBJECT-DESCRIPTION:传递元数据本身的信息。

3. OpenUrl参数传递


OpenURL参数传递的构成如下:
http://localhost/OpenURL/SelectType.aspx?aulast=a&aufirst=b&auinit=c&auinit1=d&auinitm=e&ausuffix=f&au=g&aucorp=h&atitle=i&title=j&jtitle=k&stitle=l&date=m&chron=n&ssn=o&quarter=p&volume=q&part=r&issue=s&spage=t&epage=u&pages=v&artnum=w&isbn=x&issn=y&eissn=z&coden=aa&sici=bb&genre=cc
各参数含义对照表:

[img,614,900]file:///C:/DOCUME~1/qu/LOCALS~1/Temp/ksohtml/wps_clip_image2.jpg[/img]

4. OpenURL举例


[img,25,24]file:///C:/DOCUME~1/qu/LOCALS~1/Temp/ksohtml/wps_clip_image3.png[/img]
提示
目前系统仅支持期刊论文和学位论文两个数据库。

例 B.1. 针对期刊论文
要向链接服务器地址为http://www.wanfangdata.com.cn/OpenUrl/Periodical.aspx提出论文题名为“Chemistry”,日期为“1975”的查询,其OpenURL为:http://www.wanfangdata.com.cn/OpenUrl/Periodical.aspx?title=Chemistry&date=1975。其中:
BASE-URL(基础URL):http://www.wanfangdata.com.cn/OpenUrl/Periodical.aspx。
QUERY(查询):title=Chemistry&date=1975。


例 B.2. 针对学位论文
要向链接服务器地址为http://www.wanfangdata.com.cn/OpenUrl/cddb.aspx提出论文题名为“Feminist”的查询,其OpenURL为:http://www.wanfangdata.com.cn/OpenUrl/cddb.aspx?title=Feminist。其中:
BASE-URL(基础URL):http://www.wanfangdata.com.cn/OpenUrl/cddb.aspx。
QUERY(查询):title=Feminist。