顯示具有 stringcontent 標籤的文章。 顯示所有文章
顯示具有 stringcontent 標籤的文章。 顯示所有文章

2022年7月20日 星期三

c# 主機傳回 string vs. Http.StringContent vs. HttpResponseMessage 的差異說明 - Ext.Ajax.reuqest(

目的: 1>說明主機端傳回 string vs Http.StringContent vs  HttpResponseMessage 的不同(主機端)

         2>說明主機端傳回 string  vs Http.StringContent vs HttpResponseMessage , 在前端接收的結果

摘要:  

         1>string : 單純的資料型態 , 傳回至前端會含 字串引號("  ")
         2>StringContent 為 Object 含Header,content  , 真正的內容存在 content(以 byte 方式儲存)
         3>HttpStringMessage: 傳回至前端, response.responseText 不會含字串引號


1> *.cs  c# 主機端 *Controller:  

    1>>String Tmp_RtnStr;   //一般的字串



   2>>StringContent Tmp_StringContent  ;    // HTTP  的字串內容, 含 Header 
1) HTTP  的字串內容, 含 Header (說明 charset) , 
2) 真正的內容存在 [content] 屬性


2> *.js  JavaScript 前端 , 接收主機端(String及 Http.StringContent)的傳回結果

Case1: 接收主機傳回 string
     1>>string : 主機端傳回 string
         *.cs
        [HttpPost]        
        public String get_PRNLIST()
        {
                   String Tmp_RtnStr;         
                  Tmp_RtnStr = "{Key:" + myfunc.AA("ABC") + "}";
                 return Tmp_RtnStr
        }
     
   2>>前端接收 [主機端傳回 string]:




var np = {};
        np["CLS"] = Tmp_CLS;
        np["DITM"] = Tmp_DITM;
        var isOk = true;
Ext.Ajax.request({
            method: "POST",
            url: '../../api/V120103API/CHECK_CLS_DITM',
            params: np,
            async: false,
            success: function (response, opts) {
                console.log("0 response.responseText=", response.responseText);
                var Tmp_Obj = Ext.decode(response.responseText);
                console.log("1  Tmp_Obj=", Tmp_Obj);
                if (Tmp_Obj["success"] == false) {
                    var Tmp_Rtn_Msg = "類別(" + Tmp_CLS + ")排序項次(" + Tmp_DITM + ")已存在拆挪管制標準檔(AMM_FRO3F16STD)<br>"
                        + "請檢核<br>"
                        + Tmp_Obj["Rtn_Msg"];
                    mywarnalert(Tmp_Rtn_Msg);
                    isOk = false;
                }
            },  //end of success                
            failure: function (response, opts) {
                var Tmp_Obj = Ext.decode(response.responseText);
                var Tmp_Rtn_Msg = "類別(" + Tmp_CLS + ")排序項次(" + Tmp_DITM + ")已存在拆挪管制標準檔(AMM_FRO3F16STD)<br>"
                    + "請檢核<br>"
                    + Tmp_Obj["Rtn_Msg"];
                mywarnalert(Tmp_Rtn_Msg);
                isOk = false;
            }
        })  //end of Ext.Ajax.Request
        return isOk;
    } // end of CheckFormValue





Case2: 接收主機傳回 StringContent

    1>>string : 主機端傳回 StringContent         *.cs
        [HttpPost]        
        public StringContent get_PRNLIST()
        {
                   String Tmp_RtnStr;         
                  Tmp_RtnStr = "{Key:" + myfunc.AA("ABC") + "}";

                  StringContent Tmp_StringContent;
                 Tmp_StringContent = new StringContent(Tmp_RtnStr);
                 return Tmp_StringContent;              
        }

  2>>前端接收 [主機端傳回 StringContent]:   *.js

       console.log("0 response=", response);     
       var Tmp_ObjAryStr1 = response.responseText;
       console.log("1  response.responseText=", response.responseText);            
       var Tmp_Obj_decode1 = Ext.decode(response.responseText);
       console.log("1  Ext.decode(response.responseText)=", Tmp_Obj_decode1);            
       var Tmp_Obj_decode1_1 = Ext.decode(Tmp_Obj_decode1);
       console.log("1  Ext.decode_2(response.responseText)=", Tmp_Obj_decode1_1);            


Case3: 接收主機傳回 HttpResponseMessage

1>>HttpResponseMessage: 主機端傳回 HttpResponseMessage  
        public HttpResponseMessage get_PRNLIST()
      {
            Tmp_RtnStr = "{Key:" + myfunc.AA("ABC") + "}";
            var response = this.Request.CreateResponse();
            response.Content = new StringContent(Tmp_RtnStr);    // 回應內容
            return response;
         }



 console.log("1  response.responseText=", response.responseText);            
            var Tmp_Obj_decode1 = Ext.decode(response.responseText);
            console.log("1  Ext.decode(response.responseText)=", Tmp_Obj_decode1);            
            var Tmp_Obj_decode1_1 = Ext.decode(Tmp_Obj_decode1);
            console.log("1  Ext.decode_2(response.responseText)=", Tmp_Obj_decode1_1);