gpt4 book ai didi

asp.net-mvc - 从我的 Controller 而不是从我的 asp.net mvc Web 应用程序中的 View 调用 JSON API

转载 作者:行者123 更新时间:2023-12-02 02:56:54 25 4
gpt4 key购买 nike

我需要从我的 asp.ner mvc Web 应用程序调用 BPM 引擎的 JSON API。对 BPM 的 API 调用构造如下:-

http://localhost:8080/jw/web/json/workflow/process/list?j_username=kermit&hash=9449B5ABCFA9AFDA36B801351ED3DF66&loginAs=' + username

其中 j_user 和 hash 参数均表示在 BPM 引擎端设置的主登录用户名和密码。目前,我正在从我的 asp.net mvc 的 View 级别使用 java/script 调用 API:-

$(document).ready(function () {
var fullurl = 'http://localhost:8080/jw/web/json/workflow/package/list?j_username=kermit&hash=9449B5ABCFA9AFDA36B801351ED3DF66&loginAs=' + username ;
$.ajax({
type: "GET",
url: fullurl,

dataType: "JSONP",
// contentType: "application/json; charset=utf-8",
success: function (result) {

$.each(result.data, function (key, val) {

// Format the text to display.
// var str = val.packageName + ' | ' + val.packageId;
var str = val.packageName ;
// Add a list item for the product.
$('<li/>', { text: str })
.appendTo($('#products'));

});
}
});


});

但有人告诉我,公开主登录用户名和密码以及代表 asp.net mvc 中登录用户用户名的 LoginAS 用户名是不安全的,而且我应该在服务器端而不是从 JavaScript 进行 API 调用。

但我的问题是如何转换上面的代码以从 mvc Controller 端接收 JSON,然后将 JSON 传递到 View ?最好的问候

最佳答案

您可以使用WebClient向指定的 url 发起 HTTP 请求:

public class PackagesController: Controller
{
public ActionResult List()
{
using (var client = new WebClient())
{
var query = HttpUtility.ParseQueryString(string.Empty);
query["j_username"] = "kermit";
query["hash"] = "9449B5ABCFA9AFDA36B801351ED3DF66";
query["loginAs"] = "some_username";
var url = new UriBuilder("http://localhost:8080/jw/web/json/workflow/package/list");
url.Query = query.ToString();
string json = client.DownloadString(url.ToString());
return Content(json, "application/json");
}
}
}

或者您可以使用新的 HttpClient .NET 4.5 中引入:

public class PackagesController : AsyncController
{
public async Task<ActionResult> ListPackages()
{
using (var client = new HttpClient())
{
var query = HttpUtility.ParseQueryString(string.Empty);
query["j_username"] = "kermit";
query["hash"] = "9449B5ABCFA9AFDA36B801351ED3DF66";
query["loginAs"] = "some_username";
var url = new UriBuilder("http://localhost:8080/jw/web/json/workflow/package/list");
url.Query = query.ToString();
var response = await client.GetAsync(url.ToString());
var result = await response.Content.ReadAsStringAsync();
return Content(result, "application/json");
}
}
}

并从您的 javascript 向上述操作发送 AJAX 请求:

<script type="text/javascript">
$(document).ready(function () {
$.ajax({
url: '@Url.Action("List", "Packages")',
type: 'GET',
cache: false,
success: function (result) {
$.each(result.data, function (key, val) {
var str = val.packageName;
$('<li/>', { text: str })
.appendTo($('#products'));
});
}
});
});
</script>

关于asp.net-mvc - 从我的 Controller 而不是从我的 asp.net mvc Web 应用程序中的 View 调用 JSON API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12834930/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com