Unity 3d 使用 JSON 请求调用 POST API
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。
请帮忙解决。
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请求,实现相关功能。