⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 srwtst.c

📁 harvest是一个下载html网页得机器人
💻 C
字号:
/* * Copyright (c) 2002-2003, Index Data. * See the file LICENSE for details. * * $Id: srwtst.c,v 1.5 2003/03/03 19:57:37 adam Exp $ */#include <yaz/srw.h>#if HAVE_XML2Z_SOAP_Handler h[2] = {    {"http://www.loc.gov/zing/srw/v1.0/", 0, (Z_SOAP_fun) yaz_srw_codec},    {0, 0, 0}};int main(int argc, char **argv){    char buf[163840];    char *content_buf = buf;    int content_len;    int ret;    size_t no;    Z_SOAP *soap_package = 0;    ODR decode, encode;    int debug = 0;    nmem_init();    if (argc == 2 && !strcmp(argv[1], "debug"))        debug = 1;    no = fread(buf, 1, sizeof(buf), stdin);    if (no < 1 || no == sizeof(buf))    {        fprintf(stderr, "Bad file or too big\n");        exit (1);    }    decode = odr_createmem(ODR_DECODE);    encode = odr_createmem(ODR_ENCODE);    content_len = no;    ret = z_soap_codec(decode, &soap_package,                        &content_buf, &content_len, h);    if (!soap_package)    {        fprintf(stderr, "Decoding seriously failed\n");        exit(1);    }    if (debug)    {        fprintf(stderr, "got NS = %s\n", soap_package->ns);        if (soap_package->which == Z_SOAP_generic &&            soap_package->u.generic->no == 0)        {            Z_SRW_PDU *sr = soap_package->u.generic->p;            if (sr->which == Z_SRW_searchRetrieve_request)            {                 Z_SRW_searchRetrieveRequest *req = sr->u.request;                switch(req->query_type)                {                case Z_SRW_query_type_cql:                    fprintf(stderr, "CQL: %s\n", req->query.cql);                    break;                case Z_SRW_query_type_xcql:                    fprintf(stderr, "XCQL\n");                    break;                case Z_SRW_query_type_pqf:                    fprintf(stderr, "PQF: %s\n", req->query.pqf);                    break;                }            }            else if (sr->which == Z_SRW_searchRetrieve_response)            {                Z_SRW_searchRetrieveResponse *res = sr->u.response;                if (res->records && res->num_records)                {                    int i;                    for (i = 0; i<res->num_records; i++)                    {                        fprintf (stderr, "%d\n", i);                        if (res->records[i].recordData_buf)                            fwrite(res->records[i].recordData_buf, 1,                                   res->records[i].recordData_len, stderr);                    }                }            }        }    }    ret = z_soap_codec(encode, &soap_package,                       &content_buf, &content_len, h);    if (content_buf && content_len)        fwrite (content_buf, content_len, 1, stdout);    else    {        fprintf(stderr, "No output!\n");        exit(1);    }    odr_destroy(decode);    odr_destroy(encode);    nmem_exit();    exit(0);}#elseint main(int argc, char **argv){    fprintf(stderr, "SOAP disabled\n");    exit(1);}#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -