[Unity3d]unity中http通訊

蓬萊仙羽發表於2013-12-03

前言

Unity3d 是一個跨平臺的引擎,在移動網際網路浪潮之中,尤其是移動遊戲3d方向上,Unity3d 毫無疑問是最耀眼的明星。Unity3d的http通訊很簡單,也非常好用,下面通過http和php sever互動來簡單介紹一下。

http 提交資料原理 

http 協議通過 url來獲取和提交資料 。提交資料的方式 有兩種,一種是get方法,一種是post方法。get一般用於告訴伺服器把滿足引數的資料傳送給回來。

例如:get 的html程式碼如下:

[html] view
plain
copy
  1. <form action=“search.php” method =“GET”>  
  2.     <username:<inputtypeinputtype=”text”name=”user”/><br>  
  3.     <password:<inputtypeinputtype=”password “name=”pwd”/><br>  
  4.      <input type=”submit”value=”login”/>  
  5. </form >  

post一般是將資料傳送給伺服器,伺服器將這些資料進行處理,比如說儲存到資料庫。

例如:post的html 程式碼如下:

[html] view
plain
copy
  1. <form action=“login.php” method =“POST” >  
  2.     <username:<inputtypeinputtype=”text”name=”user”/><br>  
  3.     <password:<inputtypeinputtype=”password “name=”pwd”/><br>  
  4.      <input type=”submit”value=”login”/>  
  5. </form >  

     其實區別就是提交的方式不一樣,點選login按鈕後,瀏覽器位址列裡分別顯示如下:

       get方法url為:http://127.0.0.1/serach.php?user=hortor&pwd=123

       post方法url為:http://127.0.0.1

PHP服務端接收資料方法

服務端針對這兩種方式響應的有兩種方式:

get方法接收資料的方法為 $_GET[user],來接收客戶端傳送的user的值。

post方法接收資料的方法為 $_POST[user]也是用來接收客戶端變數user的值。

UNITY WWW類使用方法

unity www 類同樣對應兩種提交資料的方式,常用的兩個建構函式為:

static function WWW (url : String) : WWW 

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

第一個函式是通過get方法向伺服器傳送資料,第二個是用post提交資料,其中WWWForm有個方法叫:AddField(agr : string, value : string),來新增引數。

get例子:

[javascript] view
plain
copy
  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例子:

[javascript] view
plain
copy
  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 這個方法是程式每一幀呼叫一次,當getData 執行完成,返回結果,這就相當於是非同步請求資料。WWW 類有幾個常用的靜態變數,分別為:

1、WWW.text  返回從網頁得到資料,型別為string。

2、WWW.error 返回錯誤資訊,比如說超時,網路連線錯誤等問題。


相關文章