unity3d中的(de)http通(tōng)信 post/get

發表日(rì)期:5/20/2018 1:14:18 AM    浏覽次數:7257     

前言

Unity3d 是一個(gè)跨平台的(de)引擎,在移動互聯網浪潮之中,尤其是移動遊戲3d方向上(shàng),Unity3d 毫無疑問(wèn)是最耀眼的(de)明(míng)星。Unity3d的(de)http通(tōng)信很(hěn)簡單,也非常好(hǎo)用,下(xià)面通(tōng)過http和(hé)php sever交互來(lái)簡單介紹一下(xià)。

http 提交數據原理(lǐ)

http 協議(yì)通(tōng)過 url來(lái)獲取和(hé)提交數據 。提交數據的(de)方式 有(yǒu)兩種,一種是get方法,一種是post方法。get一般用于告訴服務器(qì)把滿足參數的(de)數據發送給回來(lái)。

例如:get 的(de)html代碼如下(xià):

 


  1. <</span>form action="search.php" method ="GET">  
  2.     <</span>username:<</span>inputtypeinputtype="text"name="user"/><</span>br>  
  3.     <</span>password:<</span>inputtypeinputtype="password "name="pwd"/><</span>br>  
  4.      <</span>input type="submit"value="login"/>  
  5. </</span>form >  



 

post一般是将數據發送給服務器(qì),服務器(qì)将這(zhè)些數據進行處理(lǐ),比如說(shuō)存儲到數據庫。

例如:post的(de)html 代碼如下(xià):

 


  1. <</span>form action="login.php" method ="POST"  
  2.     <</span>username:<</span>inputtypeinputtype="text"name="user"/><</span>br>  
  3.     <</span>password:<</span>inputtypeinputtype="password "name="pwd"/><</span>br>  
  4.      <</span>input type="submit"value="login"/>  
  5. </</span>form  



其實區(qū)别就是提交的(de)方式不一樣,點擊login按鈕後,浏覽器(qì)地(dì)址欄裏分别顯示如下(xià):

get方法url為(wèi):http://127.0.0.1/serach.php?user=hortor&pwd=123

post方法url為(wèi):http://127.0.0.1

PHP服務端接收數據方法

服務端針對(duì)這(zhè)兩種方式響應的(de)有(yǒu)兩種方式:

get方法接收數據的(de)方法為(wèi) $_GET[user],來(lái)接收客戶端發送的(de)user的(de)值。

post方法接收數據的(de)方法為(wèi) $_POST[user]也是用來(lái)接收客戶端變量user的(de)值。

UNITY WWW類使用方法

unity www 類同樣對(duì)應兩種提交數據的(de)方式,常用的(de)兩個(gè)構造函數為(wèi):

static function WWW (url : String) : WWW

static function WWW (url : String, form : WWWForm) : WWW

第一個(gè)函數是通(tōng)過get方法向服務器(qì)發送數據,第二個(gè)是用post提交數據,其中WWWForm有(yǒu)個(gè)方法叫:AddField(agr : string, value : string),來(lái)添加參數。

get例子(zǐ):

[javascript] 
  1. #pragma strict  
  2. privatevar url String "127.0.0.1/login.php?user=test&pwd=123";  
  3. function Start ()  
  4.      var getData WWW WWW(url);  
  5.      yield getData;       
  6.      if(getData.error != null)  
  7.           Debug.Log(getData.error);  
  8.       
  9.      else  
  10.           Debug.Log(getData.text);  
  11.       
  12. }  

post例子(zǐ):

[javascript]
  1. #pragma strict  
  2. privatevar url String "127.0.0.1/login.php";  
  3. function Start ()  
  4.      var form WWWForm new WWWForm();  
  5.      form.AddField("user", "test");  
  6.      form.AddField("pwd", "123");  
  7.      var getData WWW WWW(url, form);  
  8.      yield getData;  
  9.      if(getData.error != null)  
  10.           Debug.Log(getData.error);  
  11.       
  12.      else  
  13.           Debug.Log(getData.text);  
  14.       
  15. }  

其中yield 這(zhè)個(gè)方法是程序每一幀調用一次,當getData 執行完成,返回結果,這(zhè)就相(xiàng)當于是異步請求數據。WWW 類有(yǒu)幾個(gè)常用的(de)靜态變量,分别為(wèi):

1、WWW.text 返回從(cóng)網頁得到數據,類型為(wèi)string。

2、WWW.error 返回錯(cuò)誤信息,比如說(shuō)超時(shí),網絡連接錯(cuò)誤等問(wèn)題。

上(shàng)一篇:Android中使用untiy3d 導出C# WebService SOAP
下(xià)一篇:Unity3D教程:如何使用動畫(huà)系統制作(zuò)下(xià)雨效果