【发布时间】:2019-03-12 15:25:09
【问题描述】:
我是 Unity 新手,现在处于学习阶段。
我正在尝试将硬币和钻石从 Unity 游戏更新到 apache 服务器。
我从后端开发者那里得到了一个 URL
这是网址
http://192.168.10.89:8080/GameManage/coindiamond/
在邮递员中测试此网址时。金币和钻石更新正常。
但是当我在 Unity 中进行测试时,它不会。 (后端开发人员对统一一无所知)。
这是我的 C# 代码。
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
using System.Collections.Generic;
public class PostJsonDataScript : MonoBehaviour
{
string url = "http://192.168.10.89:8080/GameManage/coindiamond/";
public int id, coin, diamond;
private void Start()
{
}
private void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
id = 1;
coin = 3;
diamond = 4;
UpdateUser(id, coin, diamond);
Debug.Log("updated");
}
}
public void UpdateUser(int id, int coin, int diamond)
{
WWWForm form = new WWWForm();
form.AddField("id", id);
form.AddField("coin", coin);
form.AddField("diamond", diamond);
}
}
我已经被困在这里 2 周了。有人请帮帮我
我的代码变成了这样
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Networking;
using System.Collections;
public class PostJsonDataScript : MonoBehaviour
{
public int id, coin, diamond;
string url = "http://192.168.10.89:8080/GameManage/coindiamond/";
private IEnumerator UpdateUser(int userId, int userCoin, int userDiamond)
{
userId = 1;
userCoin = 2;
userDiamond = 3;
var json = "{\"id\":\"" + userId + "\",\"coin\":\"" + userCoin + "\",\"diamond\":\"" + userDiamond + "\"}";
Debug.Log(json);
UnityWebRequest www = UnityWebRequest.Post(url, json);
{
www.SetRequestHeader("Content-Type", "application/json");
www.SetRequestHeader("Accept", "text/json");
yield return www.SendWebRequest();
if (www.isNetworkError || www.isHttpError)
{
Debug.LogErrorFormat(this, "Upload failed with: {0} - {1}", www.responseCode, www.error);
}
else
{
Debug.Log("Form upload complete!");
}
}
}
private void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
id = 1;
coin = 2;
diamond = 3;
StartCoroutine(UpdateUser(id, coin, diamond));
}
}
}
我的语法正确吗?
我上传失败:400 - Generic/Unknown Http error
【问题讨论】:
-
错误是什么?
-
在我给出的代码中 id = 1;硬币 = 2;钻石 = 3;当我运行程序时,它应该将这些值更新到服务器但它不会@Johnny
-
如果您正在发布帖子,那么服务器需要处理该请求。这不再与 Unity 相关,但更可能是 php、nodeJS 或其他服务器端开发。
-
您创建了一个
WWWForm,但我没有看到任何创建请求的尝试,例如使用UnityWebRequest.Post以实际将请求发送到服务器...?? -
顺便说一句
WWW也已过时。也许更好地使用UnityWebRequest.Post...