Сервис, похоже, требует определенного формата JSON. Так как ваша хардкорная версия работает
"{\"messages\":{\"message\":\"This is a test\"}}";
, но не один string
Я думаю, вы должны использовать что-то вроде
string missingObjectCount = "{\"messages\":{\"message\":\"" + HighlightedObject.GetComponent<OBClick>().name + "\"}}"
Как упоминалось в ваш предыдущий вопрос :
В настоящее время ваш код будет зависать до тех пор, пока запрос не будет выполнен.
Я бы предпочел использовать UnityWebRequest.Put
, чтобы не блокироватьвесь поток, пока запрос не будет выполнен.
Это всего лишь пример (с небольшими правками) из API, но я думаю, что он довольно прост, и вы сможете использовать его для своих целей
public class MyBehavior : MonoBehaviour
{
public void NextButton()
{
StartCoroutine(Upload());
}
IEnumerator Upload()
{
byte[] myData = System.Text.Encoding.UTF8.GetBytes("{\"messages\":{\"message\":\"" + HighlightedObject.GetComponent<OBClick>().name + "\"}}");
using (UnityWebRequest www = UnityWebRequest.Put(YOUR_URL, myData))
{
yield return www.Send();
if (www.isNetworkError || www.isHttpError)
{
Debug.Log(www.error);
}
else
{
Debug.Log("Upload complete!");
}
}
}
}
Кстати, что-то мешает вам использовать Firebase SDK ?
Там это будет что-то вроде
public class MyScript: MonoBehaviour
{
private void Start()
{
// Set up the Editor before calling into the realtime database.
FirebaseApp.DefaultInstance.SetEditorDatabaseUrl("https://YOUR-FIREBASE-APP.firebaseio.com/");
// Get the root reference location of the database.
reference = FirebaseDatabase.DefaultInstance.RootReference;
}
public void NextButton()
{
// ported the variable names from your latest question
mDatabaseRef.Child("messages").Child("message").SetValueAsync(HighlightedObject.GetComponent<OBClick>().name);
}
}