[英]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上的不同端口。
是与以下网址不同的网址/域:
有两种解决方案,要么利用JSONP,要么利用CORS向api发出请求,JSONP基本上将您的json数据包装在一个函数调用中。 当api调用返回时,它绕过安全限制执行回调/函数调用。 但是,JSONP和CORS都需要服务器支持,这带来了解决方案2 ...
通过API为您要使用的网页提供服务,这意味着您可以从同一域中对其进行服务器处理,因此不会出现跨域问题!
很高兴您已将其分类,我知道它可能会因网络通话而令人沮丧。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.