Sharepoint 如何获取对外部 Web 服务的请求

Sharepoint How to do get request to external web service

如何从 Sharepoint 对象模型向外部 Web 服务发出获取请求?我试着用 ajax 请求做到了:

 $.get("http:/servername/webservice_name", function(data, status) {
alert("Data: " + data[0] + "\nStatus: " + status);

});

但是我有一个错误:访问被拒绝。 我的网络服务有 JSON 格式的响应。 我已经阅读了很多文章,但没有决定。我读到 ajax 禁止在 SharePoint 中用于外部 Web 服务。没有 ajax 怎么办?

如果您认为 AJAX 或特定库的使用阻止您访问网络服务,您可以尝试使用本机 JavaScript [=11= 直接调用网络服务].

例如:

var verb = "GET";
var url = "http://servername/webservice_name";
var xhr = new XMLHttpRequest();
xhr.open(verb, url, true);
xhr.setRequestHeader("Content-Type","application/json");
xhr.onreadystatechange = function(){
    if(xhr.readyState == 4){ 
        myCallbackFunction(xhr.status, xhr.responseText);
    }
};
xhr.send(data);

function myCallbackFunction(status, text){
    // do something with the results based on the status
}

您还应确认您的 Internet Explorer 设置对于 SharePoint 与 HTML 页面的设置相同,您可以在该页面上使用 Web 服务。具体来说,您需要检查浏览器模式和安全设置。

在尝试对您的网络或代码进行故障排除之前,请确认当设置相同时问题仍然存在。

在 SharePoint online 中,它仅适用于 https 网络服务。不允许来自 https 网站的 http。 最终代码,适用于 https:

$(document).ready(function(){
$.ajax({
    url: "https://services.odata.org/Northwind/Northwind.svc/Customers",
    type: "GET",
    headers: { "ACCEPT": "application/json;odata=verbose" },
    async: false,
    success: function (data) {
        if(data.d.results.length>0){
            alert("Results Count:"+data.d.results.length);
        }else{
            alert("no data");
        }
    },
    error: function () {
        //alert("Failed to get details");                
    }
});

});