asp.net mvc编写跨域调用WEBAPI传递JSON数据

2025-10-22 08:26:14

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 + '&nbsp;&nbsp;' + item.title + '&nbsp;&nbsp;' + item.participant + '&nbsp;&nbsp;' + 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;

            }

        }

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢