繁体   English   中英

如何向OWIN自托管API发出HTTP GET请求?

[英]How to make an HTTP GET request to OWIN self hosted API?

我是Web开发的新手,但我想为我为工作而创建的现有Windows Service应用程序创建Web api。

我现在的目标是创建一个简单的Web应用程序,该应用程序由一些文本输入字段组成,用户可以在其中输入电子邮件并订阅邮件列表。

有人指出我在现有项目中使用OWIN自托管Web api的方向,因此我看了本指南以开始使用:

https://www.asp.net/web-api/overview/hosting-aspnet-web-api/use-owin-to-self-host-web-api

本指南显示了控制台应用程序的调用和显示API,但我想通过Web应用程序执行相同的操作。 因此,我尝试使用带有OWIN的控制台应用程序来完成“ ASP.NET Web Api 2入门 ”指南中的操作。

当启动控制台应用程序时,我可以输入http://localhost:8080/api/values/1并得到<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">value</string>我认为这意味着Web服务器正在运行并响应请求,以获取从ValuesController返回的字符串值。

但是,我一直试图创建一个简单的网页来调用API来获取value但我一直无法弄清楚。

现在,我的index.html正文中包含以下内容:

<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-2.0.3.min.js"></script>
<script>
    var uri = "http://localhost:8080/api/values/1";

    $(document).ready(function () {
        $.getJSON(uri)
        .done(function (data) {
            $('#value').text("done");
        })
        .fail(function (jqXHR, textStatus, err) {
            $('#value').text('Error: ' + err);
        });

    });
</script>

我只是得到Error:打印在页面上。 同样,我还是从事与Web相关的技术的新手,所以任何指导都将不胜感激。

好的,请按照注释中的讨论进行操作(帮助您调试应用程序)。 浏览器中的跨域安全策略限制了网页调用另一个域上存在的数据源。 域可以是不同的URL,也可以是同一URL上的不同端口。

http://本地主机:80

是与以下网址不同的网址/域:

http://本地主机:81

有两种解决方案,要么利用JSONP,要么利用CORS向api发出请求,JSONP基本上将您的json数据包装在一个函数调用中。 当api调用返回时,它绕过安全限制执行回调/函数调用。 但是,JSONP和CORS都需要服务器支持,这带来了解决方案2 ...

通过API为您要使用的网页提供服务,这意味着您可以从同一域中对其进行服务器处理,因此不会出现跨域问题!

很高兴您已将其分类,我知道它可能会因网络通话而令人沮丧。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM