你可以使用网络客户端 http://msdn.microsoft.com/en-us/library/system.net.webclient.aspx向指定的 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");
}
}
}
或者你可以使用新的Http客户端 http://msdn.microsoft.com/en-us/library/system.net.http.httpclient.aspx.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>