如何向 OWIN 自托管 API 发出 HTTP GET 请求?
How to make an HTTP GET request to OWIN self hosted API?
我是 Web 开发的新手,但我想为我为工作创建的现有 Windows 服务应用程序创建 Web api。
我现在的目标是创建一个简单的网络应用程序,其中包含一些文本输入字段,人们可以在其中输入他们的电子邮件并订阅邮件列表。
有人指出我在现有项目中使用 OWIN 自托管网络 api,因此我查看了本指南以开始使用:
https://www.asp.net/web-api/overview/hosting-aspnet-web-api/use-owin-to-self-host-web-api
本指南展示了控制台应用程序调用和显示 API,但我想从网络应用程序中执行相同的操作。因此,我尝试使用带有 OWIN 的控制台应用程序来完成“Getting Started with 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:
。我再次接触网络相关技术,因此非常感谢任何指导。
好的,按照评论中的讨论(帮助您调试应用程序)。
浏览器中的 cross-origin 安全策略限制网页调用存在于不同域中的数据源。一个域要么是不同的 url,要么是同一 url.
的不同端口
与 url/domain 不同:
对此有两种解决方案,利用 JSONP 或 CORS 向 api 发出请求,JSONP 基本上将您的 json 数据包装在一个函数调用中。当 api 调用 returns 时,它会执行 callback/function 调用,绕过安全限制。
但是JSONP和CORS都需要服务器支持,这就带来了方案2...
从 API 提供您尝试使用的网页,这意味着您从同一域提供它,因此没有 cross-domain 问题!!
很高兴你已经解决了,我知道网络电话可能会令人沮丧。
我是 Web 开发的新手,但我想为我为工作创建的现有 Windows 服务应用程序创建 Web api。
我现在的目标是创建一个简单的网络应用程序,其中包含一些文本输入字段,人们可以在其中输入他们的电子邮件并订阅邮件列表。
有人指出我在现有项目中使用 OWIN 自托管网络 api,因此我查看了本指南以开始使用:
https://www.asp.net/web-api/overview/hosting-aspnet-web-api/use-owin-to-self-host-web-api
本指南展示了控制台应用程序调用和显示 API,但我想从网络应用程序中执行相同的操作。因此,我尝试使用带有 OWIN 的控制台应用程序来完成“Getting Started with 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:
。我再次接触网络相关技术,因此非常感谢任何指导。
好的,按照评论中的讨论(帮助您调试应用程序)。 浏览器中的 cross-origin 安全策略限制网页调用存在于不同域中的数据源。一个域要么是不同的 url,要么是同一 url.
的不同端口与 url/domain 不同:
对此有两种解决方案,利用 JSONP 或 CORS 向 api 发出请求,JSONP 基本上将您的 json 数据包装在一个函数调用中。当 api 调用 returns 时,它会执行 callback/function 调用,绕过安全限制。 但是JSONP和CORS都需要服务器支持,这就带来了方案2...
从 API 提供您尝试使用的网页,这意味着您从同一域提供它,因此没有 cross-domain 问题!!
很高兴你已经解决了,我知道网络电话可能会令人沮丧。