首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Sharepoint Online中将httpRequest/AJAX发布到外部API

在Sharepoint Online中将httpRequest/AJAX发布到外部API
EN

Stack Overflow用户
提问于 2018-01-23 15:08:50
回答 1查看 1.1K关注 0票数 0

景物

我试图调用IBM中的一个服务,并发送了一个文件。此请求必须在Sharepoint中使用JavaScript完成。在请求中,将发送一个文件。问题

我有交叉域( Sharepoint侧)和坏请求(IBM)在Sharepoint Online上的问题。我试了几种类似的方法。

尝试

要解决跨域问题:

代码语言:javascript
复制
$.ajax({
    url: "../_api/SP.WebProxy.invoke",
    type: "POST",
    data: JSON.stringify(
        {
            "requestInfo": {
                "__metadata": { "type": "SP.WebRequestInfo" },
                "Url": "https://gateway-a.watsonplatform.net/visual-recognition/api/v3/classify?api_key={API-KEY}&version=2016-05-20",
                "Method": "POST",
                "Headers": {
                    "results": [{
                        "__metadata": { "type": "SP.KeyValue" }, 
                        "Key": "Accept",
                        "Value": "application/json;odata=verbose",
                        "ValueType": "Edm.String"
                    }, {
                        "__metadata": { "type": "SP.KeyValue" },
                        "Key": "Content-Type",
                        "Value": "application/json",
                        "ValueType": "Edm.String"
                    }]
                }
                ,
                "Body": JSON.stringify({ "files":[ { "name":"imagem.png","content": image } ]})//Problem here
            }
        }),
    headers: {
        "Accept": "application/json;odata=verbose",
        "Content-Type": "application/json;odata=verbose",
        "X-RequestDigest": $("#__REQUESTDIGEST").val()
    },
    success: function (data) {
        alert("Sucesso");
        console.log(data.d.Invoke.StatusCode);
        console.log(JSON.stringify(data.d.Invoke.Body));
    },
    error: function (data) {
        alert("Falha");
        console.log(arguments[2]);
    }
});

这样就解决了问题交叉域(Sharepoint),但我收到了不好的请求(IBM)。模型重发文件显示如下。

代码语言:javascript
复制
"Body": JSON.stringify({ "files":[ { "name":"imagem.png","content": image } ]})

要解决不良请求问题:

代码语言:javascript
复制
function CORS() {
var data = new FormData();
data.append("imagemTeste", $("#imagem")[0].files[0]);

var xhr = new XMLHttpRequest();
xhr.open('POST', 'https://gateway-a.watsonplatform.net/visual-recognition/api/v3/classify?api_key={API-KEY}&version=2016-05-20');
xhr.onload = function (e) {
    var data = JSON.parse(this.response);
    console.log(data);
}    
xhr.send(data);

}

这里解决了问题坏请求(IBM),但我得到了跨域错误(Sharepoint)。

我没办法解决这个问题了。

EN

回答 1

Stack Overflow用户

发布于 2018-06-15 02:27:31

一种选择是从服务器调用API。例如,您可以使用云函数来调用这个API。任何其他服务器端环境都应该工作。希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48404891

复制
相关文章

相似问题

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