POST httpRequest/AJAX для внешнего API в Sharepoint Online

декорации

Я пытаюсь позвонить в службу в IBM Cloud и отправил файл. Этот запрос должен быть выполнен в Sharepoint Online с использованием JavaScript. В запросе файл будет отправлен.проблема

У меня проблема с кросс-доменом (сторона Sharepoint) и неправильным запросом (сторона IBM) в Sharepoint Online. Я пробовал серевал способами.

попытки

Чтобы решить кросс-доменную проблему:

$.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 API). Файл отправки запроса восстановления показан ниже.

"Body": JSON.stringify({ "files":[ { "name":"imagem.png","content": image } ]})

Чтобы решить проблему с ошибочным запросом:

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);

}

Здесь проблема Bad request решена (IBM API), но я получаю междоменную ошибку (Sharepoint).

У меня нет идей, чтобы решить это.

1 ответ

Одним из вариантов является вызов API с сервера. Например, вы можете использовать облачные функции для вызова этого API. Любая другая серверная среда должна работать. Надеюсь это поможет.

Другие вопросы по тегам