<bdo id="ks4iu"><del id="ks4iu"></del></bdo>
  • 
    <pre id="ks4iu"></pre>
  • <bdo id="ks4iu"><del id="ks4iu"></del></bdo>
    <input id="ks4iu"><em id="ks4iu"></em></input>
    
    
  • <center id="ks4iu"><cite id="ks4iu"></cite></center>
  • 首頁 > 空調 >

    Cocos Creator中快速實現HTTP

    首先聲明,本文并不對HTTP做專業的解釋與說明,因為網上肯定有很多專業的解釋與說明。解釋專業,本文盡量嘗試以不那么專業的方式去解釋HTTP,并且最重要的是在Cocos Creator中快速實現并且使用。

    對于初學者來說,認為HTTP很復雜,不知道是什么協議。專業名詞為超文本傳輸協議(Hyper Text Transfer Protocol,HTTP),專業解釋是一個簡單的請求-響應協議。通常情況下,HTTP是一個短連接,就是當你向HTTP服務器的指定URL發送一個請求之后,HTTP服務器會返回給你數據,當你收完數據之后,通訊就結束了,這樣就完成了一次HTTP通訊。例如下載一個文件,提交一個表單等等。不像TCP協議,HTTP協議的連接通常(不是所有)是一個短連接,它主要包含三個要素:一個URL地址、一個請求(HttpRequest)、一個回應(HttpResponse)。

    Http頭 (Http Header)

    HTTP的請求數據包(HttpRequest)和回應數據包(HttpResponse)都包含一個類似于鍵值對的數據,這部分稱為HTTP頭(HeaderFields),可以將這部分的數據類型理解為C++的map類型,或者Typescript的{[key: string]: string}類型。

    Http Body

    Http Body是數據本身,也是最重要的部分,你可以簡單理解為數據正文。Http Body既可以存在于請求中,也可以存在于回應中。

    Http狀態碼(Status Code)

    HTTP狀態碼存在于回應包中,用來描述服務器處理的結果。通常狀態碼200代表服務器處理正常,這種狀態下的Body數據應該才是想要得到的數據。不同的狀態碼有不同的含義,可以在網上查詢,不做過多解釋。

    Http請求模式(Method)

    較常見的兩種HTTP請求模式(Method)為GET模式和POST模式。它們的主要區別在于,GET模式的Body數據是空的,POST模式的Body數據不為空。如果我們向一個HTTP地址發送請求時,需要附加額外的數據,那么可以使用POST模式,否則使用GET模式就行了。

    Cocos Creator需要實現什么

    其實在游戲開發中,一般來說只需要實現GET模式和POST模式的幾種數據格式的協議請求就行了。下面實現幾個重要函數:

    以GET方式向一個URL請求,返回一個字符串,結果以異步回調的方式返回:

    export function getString(url: string, callback: (statusCode: number, resp: string, respText: string) => any): {
    let xhr = new ();
    xhr.open("GET", url);
    xhr.onreadystatechange = function () {
    if (xhr.readyState == 4) {
    let resp: string = xhr.responseText;
    callback && callback(xhr.status, resp, xhr.responseText);
    }
    };
    xhr. = function (err) {
    callback && callback(-1, "", "Network error");
    };
    xhr.send();
    return xhr;
    }

    以GET方式向一個URL請求,返回一個JSON數據,結果以異步的方式返回:

    export function getJson(url: string, callback: (statusCode: number, resp: object | null, respText: string) => any): {
    let xhr = new ();
    xhr.open("GET", url);
    xhr.onreadystatechange = function () {
    if (xhr.readyState == 4) {
    let resp = null;
    try {
    if (xhr.responseText != "") {
    resp = JSON.parse(xhr.responseText);
    }
    }
    catch (e) {
    }
    callback && callback(xhr.status, resp, xhr.responseText);
    }
    };
    xhr. = function (err) {
    callback && callback(-1, null, "Network error");
    };
    xhr.send();
    return xhr;
    }

    以POST方式向一個URL請求,返回一個JSON數據,結果以異步的方式返回:

    export function postJson(url: string, data: object | string, callback: (statusCode: number, resp: object | null, respText: string) => any): {
    let xhr = new ();
    xhr.open("POST", url, true);
    xhr.setRequestHeader("Content-Type", "applicationjson;charset=utf-8");
    xhr.onreadystatechange = function () {
    if (xhr.readyState == 4) {
    let resp = null;
    try {
    if (xhr.responseText != "") {
    resp = JSON.parse(xhr.responseText);
    }
    }
    catch (e) {
    }
    callback && callback(xhr.status, resp, xhr.responseText);
    }
    };
    xhr. = function (err) {
    callback && callback(-1, null, "Network error");
    };
    var text = typeof (data) == "string" ? data :JSON.stringify(data);
    xhr.send(text);
    return xhr;
    }

    總結

    有了以上幾個函數之后,游戲中的大多數HTTP協議都能夠應對了。

    責任編輯:Rex_08

    關鍵詞: resp Http Creator string Body
    推薦閱讀
    欧美国产在线一区,免费看成年视频网页,国产亚洲福利精品一区,亚洲一区二区约美女探花
    <bdo id="ks4iu"><del id="ks4iu"></del></bdo>
  • 
    <pre id="ks4iu"></pre>
  • <bdo id="ks4iu"><del id="ks4iu"></del></bdo>
    <input id="ks4iu"><em id="ks4iu"></em></input>
    
    
  • <center id="ks4iu"><cite id="ks4iu"></cite></center>
  • 主站蜘蛛池模板: 91福利视频免费| 亚洲av无码一区二区三区电影| japanese日本护士高潮| 精品国产AV色欲果冻传媒| 精品成人AV一区二区三区| 无码国内精品人妻少妇蜜桃视频| 国产农村女人一级毛片了| 久久亚洲国产成人精品无码区| 顶级欧美熟妇高潮xxxxx| 日本动漫黄观看免费网站| 国产亚洲一区二区三区在线观看 | 国产麻豆成人传媒免费观看| 亚洲精品无码久久久久久久| 91丁香亚洲综合社区| 欧美成人怡红院在线观看| 国产精品亚洲欧美大片在线看| 亚洲免费闲人蜜桃| 国产你懂的在线| 日本精品一区二区在线播放| 国产精品亚欧美一区二区三区| 亚洲国产精品综合久久网络| 亚洲娇小性色xxxx| 日韩欧美在线观看一区| 国产农村妇女精品一二区| 中文字幕高清在线| 高潮毛片无遮挡高清免费| 日本一区免费观看| 国产成人无码综合亚洲日韩| 亚洲国产日韩欧美| 人妖在线精品一区二区三区| 日韩一级二级三级| 又色又爽又黄的视频网站| chinese乱子伦xxxx国语对白 | gay精牛cum| 欧美性猛交xxxx免费看蜜桃| 国产成人精品久久综合| 中文字幕成人在线| 狠狠爱天天综合色欲网| 国产精品午夜无码AV天美传媒| 久久精品国产亚洲AV香蕉| 自拍偷自拍亚洲精品播放|