2016-01-08 76 views
0

我想使用WWW和WWWForm來調用我的web服務的POST方法來保存分數。從webservice調用POST方法(REST)

我的服務工作,我測試了使用Chrome的高級REST客戶端:

enter image description here

的問題是在客戶端...我有以下函數來調用我的服務:

public IEnumerable saveScore(String name, float score) 
{ 
     Debug.Log("POSTING"); 
     WWWForm form = new WWWForm(); 
     form.AddField("dummy", "something"); 

     Dictionary<String, String> headers = form.headers; 
     byte[] rawData = form.data; 
     headers["arqamUserName"] = name; 
     headers["arqamUserScore"] = score.ToString(); 

     // Post a request to an URL with our custom headers 
     Debug.Log("CREATING WWW"); 
     WWW www = new WWW(url, rawData, headers); 
     yield return www; 
     Debug.Log("HAVE RESULTS"); 
     //.. process results from WWW request here... 
     if (www.error!= null) 
     { 
      Debug.Log("Erro: " + www.error); 
     } 
     else 
     { 
      Debug.Log("All OK"); 
      Debug.Log("Text: " + www.text); 
     } 
} 

然後,我只是調用上面的函數:

private bool test = false; 

void Update() 
{ 
    if (!test) 
    { 
     Debug.Log("Starting POST"); 
     Scores.getInstance().saveScore("POST", 50); 
     Debug.Log("Finished POST"); 
     test = true; 
    } 
} 

我已經完成了其他使用restsharp的c#客戶端......但是我在Unity中執行時遇到問題。

當我運行我的比賽和功能saveScore()被調用時,我得到這樣的輸出:

Starting POST 
Finished POST 

我在做什麼錯?

回答

1

您的方法不應該返回IEnumerable,但最有可能的IEnumerator,因爲您正在使用協同程序。

而且由於它是一個協同程序,您需要使用以下方法來觸發它:

StartCoroutine(Scores.getInstance().saveScore("POST", 50)); 
+0

謝謝,只是改變了這兩件事情,它完美的工作! – lulas

0

如果POSTING未顯示您的功能未被調用。

+0

謝謝你的回覆,我竟然調用該方法......我編輯我的問題,與方法稱它和我有完整的輸出。 – lulas