<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        asp.net中WebResponse 跨域訪問實例代碼

        來源:懂視網 責編:小采 時間:2020-11-27 22:40:13
        文檔

        asp.net中WebResponse 跨域訪問實例代碼

        asp.net中WebResponse 跨域訪問實例代碼:前兩天,一個朋友讓我幫他寫這樣一個程序:在asp.net里面訪問asp的頁面,把數據提交對方的數據庫后,根據返回的值(返回值為:OK或ERROR),如果為OK再把填入本地數據庫。當時,想當然,覺得很簡單,用js的xmlhttp ,如果根據response 的值是OK
        推薦度:
        導讀asp.net中WebResponse 跨域訪問實例代碼:前兩天,一個朋友讓我幫他寫這樣一個程序:在asp.net里面訪問asp的頁面,把數據提交對方的數據庫后,根據返回的值(返回值為:OK或ERROR),如果為OK再把填入本地數據庫。當時,想當然,覺得很簡單,用js的xmlhttp ,如果根據response 的值是OK

        前兩天,一個朋友讓我幫他寫這樣一個程序:在asp.net里面訪問asp的頁面,把數據提交對方的數據庫后,根據返回的值(返回值為:OK或ERROR),如果為OK再把填入本地數據庫。當時,想當然,覺得很簡單,用js的xmlhttp ,如果根據response 的值是“OK”就執行提交本地數據庫。很快寫完發過去,讓朋友試試,一試發現不行,后來一問,原來是跨域訪問,我給忽略了,于是讓朋友把asp改成web service,可朋友說程序是合作公司做的,只會asp,不會用web service ,狂暈ing。沒辦法,只能請出asp.net的 WebResponse了,很多網站采集程序都是用這個。第一版寫完了,倒是可以跨域訪問了,不過是亂碼,調整有關編碼的方式,終于可以了。這個應用雖小可是涉及的知識點不少:

        1、xmlhttp 不能跨域提交。

        當然XMLHttpRequest還是權宜的解決的方法,

        2、webresponse可以進行跨域訪問,不過要注意

        1)、get和post的區別。
        2)、注意Timeout的問題。

        這些都是簡單的程序,記下來備忘,高手就不必看了。

        不廢話了,下面是相關的c#代碼:

        代碼如下:
        /// <summary>
                /// 使用Post方法發送數據
                /// </summary>
                /// <param name=”pi_strPostURl”>提交地址</param>
                /// <param name=”pi_strParm”>參數</param>
                /// <returns></returns>      
                public static string PostResponse(string pi_strPostURl, string pi_strParm)
                {
                    try
                    {
                        //編碼
                        Encoding t_Encoding = Encoding.GetEncoding(“GB2312“);
                Uri t_Uri = new Uri(pi_strPostURl);             
                        byte[] paramBytes = t_Encoding.GetBytes(pi_strParm);
                        WebRequest t_WebRequest = WebRequest.Create(t_Uri);
                t_WebRequest.Timeout = 100000;
                        //設置ContentType
                        t_WebRequest.ContentType = “application/x-www-form-urlencoded“;

                        t_WebRequest.Method = EnumMethod.POST.ToString();                //初始化
                        using (Stream t_REStream = t_WebRequest.GetRequestStream())
                        {
                            //發送數據
                            requestStream.Write(paramBytes, 0
        , paramBytes.Length);
                        }

                        WebResponse t_WebResponse =
         t_WebRequest.GetResponse();

                        using (StreamReader t_StreamReader = new StreamReader(t_WebResponse .GetResponseStream(), t_Encoding))
                        {
                            return t_StreamReader.ReadToEnd();
                        }
                    }
                    catch
                    {
                        return “ERROR“;
                    }
                }

        public static string GetResponse(string pi_strPostURl, string pi_strParm)
                {
                    try
                    {
                        //編碼
                        Encoding t_Encoding = Encoding.GetEncoding(“GB2312“);              
                        Uri t_Uri = new Uri(string.Format(“{0}?{1}“, pi_strPostURl, pi_strParm));

                        WebRequest t_WebRequest =
         WebRequest.Create(t_Uri);

                        t_WebRequest.Timeout = 100000;
                        t_WebRequest.ContentType = “application/x-www-form-urlencoded“;

                        t_WebRequest.Method = EnumMethod.GET.ToString(); 
                        WebResponse t_WebResponse =
         t_WebRequest.GetResponse();

                        using (StreamReader t_StreamReader = new StreamReader(t_WebResponse.GetResponseStream(), t_Encoding))
                        {
                            return t_StreamReader.ReadToEnd();
                        }
                    }
                    catch (Exception e)
                    {
                        return e.ToString();
                    }
                }
        public static string AtionResponse(string pi_Url, EnumMethod pi_Method)
                {
                     string t_strUrlPath=“”;
                     string t_parm = “”;           
                     Uri  t_Url = new Uri(pi_Url);               
                     t_parm= t_Url.Query;
                     if (parmString.StartsWith(“?“))
                            t_parm = t_parm.Remove(0, 1);               
                     t_strUrlPath = “http://“ + t_Url .Authority + t_Url .AbsolutePath;
                    return GetResponse(t_strUrlPath, t_parm, pi_Method);
                }
         public enum EnumMethod
                {
                    POST,
                    GET
                }

        現在jquery ajax支持跨域了,下面看個實例我們可對上面進行處理成json數據即可

        JQuery.getJSON也同樣支持jsonp的數據方式調用。

        客戶端JQuery.ajax的調用代碼示例:

        代碼如下:
        $.ajax({
         type : "get",
         async:false,
         url : "http://www.gxlcms.com/ajax.do",
         dataType : "jsonp",
         jsonp: "callbackparam",//服務端用于接收callback調用的function名的參數
         jsonpCallback:"success_jsonpCallback",//callback的function名稱
         success : function(json){
          alert(json);
          alert(json[0].name);
         },
         error:function(){
          alert('fail');
         }
        });

        服務端返回數據的示例代碼:

        代碼如下:
        public void ProcessRequest (HttpContext context) {
         context.Response.ContentType = "text/plain";
         String callbackFunName = context.Request["callbackparam"];
         context.Response.Write(callbackFunName + "([ { name:"John"}])");
        }

        而jquery.getScript方式處理的原理類似,也同樣需要服務端返回數據上做支持,不同的是服務端返回的結果不同。不是返回一個callback的function調用,而是直接將結果賦值給請求傳遞的變量名。客戶端則是像引入一個外部script一樣加載返回的數據。

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        asp.net中WebResponse 跨域訪問實例代碼

        asp.net中WebResponse 跨域訪問實例代碼:前兩天,一個朋友讓我幫他寫這樣一個程序:在asp.net里面訪問asp的頁面,把數據提交對方的數據庫后,根據返回的值(返回值為:OK或ERROR),如果為OK再把填入本地數據庫。當時,想當然,覺得很簡單,用js的xmlhttp ,如果根據response 的值是OK
        推薦度:
        標簽: 實現 調用 web
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲中文字幕无码久久| 亚洲人成色在线观看| WWW免费视频在线观看播放| 日本在线看片免费人成视频1000| 精品国产香蕉伊思人在线在线亚洲一区二区 | 中中文字幕亚洲无线码| 97性无码区免费| 亚洲精品无码久久久久去q| 亚洲女人影院想要爱| 在线免费视频你懂的| 亚洲综合精品网站| 日本道免费精品一区二区| 亚洲一级二级三级不卡| 牛牛在线精品观看免费正| 亚洲国产精品日韩| 国产美女视频免费观看的网站| 国产偷国产偷亚洲清高动态图 | 99免费观看视频| 亚洲乱码在线播放| 香蕉视频在线观看免费国产婷婷 | 我的小后妈韩剧在线看免费高清版| 亚洲国产夜色在线观看| 日韩毛片无码永久免费看| eeuss影院免费92242部| 亚洲AV日韩精品久久久久| 亚洲高清中文字幕免费| 亚洲av综合日韩| 亚洲AV永久无码精品成人| 很黄很黄的网站免费的| 蜜臀亚洲AV无码精品国产午夜.| 久久亚洲国产精品五月天婷| 免费无遮挡无码永久视频| 亚洲人成未满十八禁网站| 亚洲一区二区精品视频| 免费A级毛片无码A∨免费| 国产AV无码专区亚洲AV麻豆丫| 日韩亚洲人成在线综合日本| 免费A级毛片无码免费视| 国产精品黄页免费高清在线观看| 亚洲日本国产精华液| 亚洲?V无码成人精品区日韩|