asp.net mvc编写跨域调用WEBAPI传递JSON数据
1、编写实体类
public class KnowledgeLecture
{
public string id;
public string title;
public string lectureContent;
public string organize;
public string participant;
public DateTime? lecturetime;
public DateTime? creatorTime;
}
2、编写webapi 代码,可以发布出去,方便其他系统调用:
//<summary>
//获取所有的应急知识讲座
//</summary>
//<returns>id、讲座标题、创建时间等的json数据</returns>
[HttpGet]
public IEnumerable<KnowledgeLecture> GetAllKnowledgeLectureInfo()
{
DateTime time = DateTime.Now.ToString("yyyy-MM-dd").ToDate();
var data = (from s in db.FXJC_yjzh_training_knowledgeLecture.Where(s => s.deleteMark != true) select s);
List<KnowledgeLecture> Result = new List<KnowledgeLecture>();
foreach (var o in data)
{
Result.Add(new KnowledgeLecture()
{
id = o.id,
title = o.lectureTitle,
lectureContent=o.lectureContent,
organize=o.Sys_Organize.F_FullName,
participant=o.participant,
lecturetime=o.lecturetime,
creatorTime = o.creatorTime,
});
}
return Result.OrderByDescending(s => s.creatorTime);
}
3、新的应用系统需要调用上面的接口,编写新的业务前端代码
<div class="news_item" style="display: none;">
<ul class="news" id="zsjz">
</ul>
</div>
<script>
$(function () {
GetknowledgeLectureInfo();
})
function GetknowledgeLectureInfo() {
$.ajax({
url: "/EmergencyManage/ECS/GetknowledgeLectureInfo",
dataType: "json",
async: true,
success: function (data) {
if (!!data) {
$(data).each(function (index, item) {
var oldTime = (new Date(item.creatorTime)).getTime();
var curTime = new Date(oldTime).format("yyyy-MM-dd hh:mm");
var oldTime1 = (new Date(item.lecturetime)).getTime();
var curTime1 = new Date(oldTime).format("yyyy-MM-dd ");
$("#zsjz").append('<li style=""><a href="">' + item.organize + ' ' + item.title + ' ' + item.participant + ' ' + item.curTime1 + '<small style="position:relative; float:right">' + curTime + ' </small></a></li>');
});
}
else {
$("#zsjz").append("暂无知识讲座哦!");
}
},
error: function (data) {
$("#zsjz").append(data.responseText);
}
});
}
</script>
4、新的应用编写后端代码,调用webapi
public string GetknowledgeLectureInfo()
{
string url = "http://192.168.3.15:8000/api/Emergency/GetAllKnowledgeLectureInfo";
return GetUrlInfo(url);
}
public string GetUrlInfo(string url)
{
try
{
//访问http方法
string strBuff = "";
Uri httpURL = new Uri(url);
///HttpWebRequest类继承于WebRequest,并没有自己的构造函数,需通过WebRequest的Creat方法建立,并进行强制的类型转换
HttpWebRequest httpReq = (HttpWebRequest)WebRequest.Create(httpURL);
///通过HttpWebRequest的GetResponse()方法建立HttpWebResponse,强制类型转换
HttpWebResponse httpResp = (HttpWebResponse)httpReq.GetResponse();
///GetResponseStream()方法获取HTTP响应的数据流,并尝试取得URL中所指定的网页内容
///若成功取得网页的内容,则以System.IO.Stream形式返回,若失败则产生ProtoclViolationException错误。在此正确的做法应将以下的代码放到一个try块中处理。这里简单处理
Stream respStream = httpResp.GetResponseStream();
///返回的内容是Stream形式的,所以可以利用StreamReader类获取GetResponseStream的内容,并以
//StreamReader类的Read方法依次读取网页源程序代码每一行的内容,直至行尾(读取的编码格式:UTF8)
StreamReader respStreamReader = new StreamReader(respStream, Encoding.UTF8);
strBuff = respStreamReader.ReadToEnd();
return strBuff;
}
catch (Exception e)
{
return e.Message;
}
}