繁体   English   中英

从Web服务调用POST方法(REST)

[英]Call a POST method (REST) from a webservice

我正在尝试使用WWW和WWWForm调用Web服务的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

我究竟做错了什么?

您的方法不应返回IEnumerable,但很可能是IEnumerator,因为您正在使用协程。

由于它是协程,因此您需要使用以下代码来触发它:

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

如果未显示POSTING,则不会调用您的函数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM