【问题标题】:Microsoft QnA Maker API Error Resource Not Found未找到 Microsoft QnA Maker API 错误资源
【发布时间】:2018-03-01 20:45:56
【问题描述】:

我正在使用 JS 为 Micosoft QnA Maker API 发送一个 POST 请求。但它返回一个带有错误资源未找到的 JSON 文件

{ "error": { "code": "ResourceNotFound", "message": "The requested resource was not found." } }

虽然我根据 API 所做的一切都是正确的,但仍然遇到同样的错误。

我在JS中使用的代码如下图:

<script type="text/javascript">
$(function() {
    var params = {

"question": "is qna maker free?",
"top": 3
    };

    $.ajax({
        url: "https://westus.api.cognitive.microsoft.com/qnamaker/v2.0/knowledgebases/XXXX/generateAnswer?" + $.param(params),
        beforeSend: function(xhrObj){
            // Request headers
            xhrObj.setRequestHeader("Content-Type","application/json");
            xhrObj.setRequestHeader("Ocp-Apim-Subscription-Key","XXXX");
        },
        type: "POST",
        // Request body
        data: "{body}",
    })
    .done(function(data) {
        alert("success");
    })
    .fail(function() {
        alert("error");
    });
});

此代码返回 alert("error") 并在控制台中显示以下消息:

westus.api.cognitive.microsoft.com/qnamaker/v2.0/knowledgebases/XXXX/generateAnswer?question=is+qna+maker+free%3F&top=3:1 POST https://westus.api.cognitive.microsoft.com/qnamaker/v2.0/knowledgebases/XXXX/generateAnswer?question=is+qna+maker+free%3F&top=3 400 (Bad Request)

我指的是这个link

我看到响应 400 说“未指定参数问题”。但我已经指定了这个问题。 我的代码有什么问题?我很确定我的代码中一定有问题。

"question": "is qna maker free?",
"top": 3

当我访问这个link

它还显示带有错误的相同 JSON 文件。

【问题讨论】:

  • 在你的 ajax 调用中添加 dataType: "json"
  • 问题还是没有解决。或者你能提一下怎么做吗? @Liquidchrome
  • 您有正确的知识库 ID 吗?我不认为 XXXX 符合条件
  • @Liquidchrome 我已经使用 XXXX 隐藏了 id。

标签: javascript json api azure microsoft-cognitive


【解决方案1】:

您的代码中有:

$.ajax({
    url: "https://westus.api.cognitive.microsoft.com/qnamaker/v2.0/knowledgebases/XXXX/generateAnswer?" + $.param(params),
    beforeSend: function(xhrObj){
        // Request headers
        xhrObj.setRequestHeader("Content-Type","application/json");
        xhrObj.setRequestHeader("Ocp-Apim-Subscription-Key","XXXX");
    },
    type: "POST",
    // Request body
    data: params, //replace {body} with the params variable
    dataType: "json" //add this line
})

您可能还想使用成功/错误函数处理响应,使其如下所示:

$.ajax({
    url: "https://westus.api.cognitive.microsoft.com/qnamaker/v2.0/knowledgebases/XXXX/generateAnswer?" + $.param(params),
    beforeSend: function(xhrObj){
        // Request headers
        xhrObj.setRequestHeader("Content-Type","application/json");
        xhrObj.setRequestHeader("Ocp-Apim-Subscription-Key","XXXX");
    },
    type: "POST",
    data: params,
    dataType: "json",
    success: function(data){
    alert("success");
    },
    error: function(e){
    console.log(e);
    }
})

【讨论】:

    猜你喜欢
    • 2020-08-03
    • 2017-08-04
    • 2017-11-01
    • 2022-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多