我正在尝试使用WWW和WWWForm来调用我的网络服务的POST方法来保存分数。
我的服务正常运行,我使用Chrome的高级REST客户端进行了测试:
问题出在客户端......我有以下功能来调用我的服务:
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
我做错了什么?
答案 0 :(得分:1)
你的方法不应该返回IEnumerable,但很可能是IEnumerator,因为你使用的是coroutine。
由于它是一个协程,你需要使用以下命令来触发它:
StartCoroutine(Scores.getInstance().saveScore("POST", 50));
答案 1 :(得分:0)
如果没有显示POSTING,则不会调用您的功能。