首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >必须提供Carrot2,返回dcs.source或dcs.c2stream中的非空文档列表。

必须提供Carrot2,返回dcs.source或dcs.c2stream中的非空文档列表。
EN

Stack Overflow用户
提问于 2018-08-13 20:03:34
回答 1查看 84关注 0票数 0

我使用的是: carrot2s api:

代码语言:javascript
复制
const xml = 
`<?xml version="1.0" encoding="UTF-8"?>
<searchresult>
<query>bob</query>
    <document id="https://api.cognitive.microsoft.com/api/v7/#WebPages.0">
        <title>Bob O's Family Fun Center | El Paso, TX</title>
        <url>http://www.bing.com/cr?IG=29AD4AB87B7B438D8F2AA5967E17967DCID=24C5C22679EF67D1293BCE6078F66638rd=1h=AaGhCeGCFZPjz86DB6AZMIlM8b3VlbHiXWyUPsmFL_k=1r=http%3a%2f%2fbobosfun.com%2fp=DevEx.LB.1,5071.1</url>
        <snippet>Bob-O’s is El Paso’s Premier Family Fun Center. Located on the Westside off Sunland Park Drive, Bob-O’s offers a variety of entertainment for the entire family.</snippet>
    </document>
</searchresult>`

    fetch(`carrot2server/dcs/rest`, {
        method: 'POST',
        body: {
            'dcs.c2stream': xml,
            'results': 100,
            'dcs.algorithm': 'lingo',
            'dcs.output.format': 'JSON'
        }
    })
    .then(function(response) {
    response.text().then(function(text) {
        console.log(text);
    })
}).catch(function(err) {
  console.log(err)
});

如果我在邮递员中运行相同的请求,我就会得到预期的结果。

我收到的错误是:

HTTP Status 400 -不良请求 必须提供dcs.source或dcs.c2stream中的非空文档列表。 由于被认为是客户端错误(例如,格式错误的请求语法、无效的请求消息帧或欺骗性请求路由),服务器无法或不会处理请求。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-14 16:52:35

通过设置正确的encodeURIComponent并添加内容类型: application/x-www-form-urlencoded,修复了这个问题。

代码语言:javascript
复制
const params = {
        'dcs.c2stream': xml,
        'results': 100,
        'dcs.algorithm': 'lingo',
        'dcs.output.format': 'JSON'
}

const searchParams = Object.keys(params).map((key) => {
    return encodeURIComponent(key) + '=' + encodeURIComponent(params[key]);
}).join('&');

fetch('carrot2server/dcs/rest', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/x-www-form-urlencoded'
    },
    body: searchParams
})
.then(function(response) {
    response.text().then(function(text) {
        console.log(text);
    })
}).catch(function(err) {
  console.log(err)
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51829795

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档