Unity 3d 使用 JSON 请求调用 POST API

9 浏览
0 Comments

Unity 3d 使用 JSON 请求调用 POST API

我想在Unity 3D中使用两个JSON参数(用户名和密码)调用登录API。

我按照stackoverflow上的许多帖子进行尝试,但我的请求参数未发送到服务器。如果我从我的Android应用、Postman和Chrome中调用此API,它们能够正常工作。

public IEnumerator CallLogin(string username,string password)

{

WWWForm form = new WWWForm();

form.AddField("username", username);

form.AddField("password", password);

UnityWebRequest www = UnityWebRequest.Post("/apis/login", form);

yield return www.Send();

if (www.error != null)

{

Debug.Log("错误: " + www.error);

}

else

{

Debug.Log("一切正常");

Debug.Log("文本: " + www.downloadHandler.text);

}

}

因此,我的问题是如何在Unity 3D中使用JSON请求调用POST API。

请帮忙解决。

0
0 Comments

Unity 3D调用POST API与JSON请求的原因及解决方法

在Unity 3D中调用POST API与JSON请求时,需要手动设置消息的内容头和消息体,并将表单数据字符串转换为JSON字符串,并将其作为参数发送给CallLogin方法。以下是解决方法的示例代码:

public IEnumerator CallLogin(string url, string logindataJsonString)
{
    var request = new UnityWebRequest(url, "POST");
    byte[] bodyRaw = Encoding.UTF8.GetBytes(logindataJsonString);
    request.uploadHandler = (UploadHandler)new UploadHandlerRaw(bodyRaw);
    request.downloadHandler = (DownloadHandler)new DownloadHandlerBuffer();
    request.SetRequestHeader("Content-Type", "application/json");
    yield return request.SendWebRequest();
    if (request.error != null)
    {
        Debug.Log("Error: " + request.error);
    }
    else
    {
        Debug.Log("All OK");
        Debug.Log("Status Code: " + request.responseCode);
    }
}

以上代码将请求的URL和请求类型传递给UnityWebRequest,并将表单数据字符串转换为字节数组后设置为上传处理器的内容。然后,将下载处理器设置为缓冲区处理器,并设置请求的内容类型为JSON。最后,通过SendWebRequest方法发送请求。

如果请求出现错误,将会打印错误日志。如果一切正常,将会打印“All OK”和响应的状态码。

通过以上方法,我们可以在Unity 3D中成功调用POST API与JSON请求,实现相关功能。

0