[英]Getting 400 (Bad Request) with my firebase URL
I am coming to an issue where I am trying to do a PUT request to update and store data to my firebase database, but for some reason when I run my code and select on my object and click on next, I get error with my firebase web 请求 url 作为 400(错误请求)错误。 有没有人如何解决这个问题。 谢谢您的帮助。
PS:HIDDEN_URL 只是一个文本 - 出于安全目的,我隐藏了我的项目 url。 谢谢!
- 硬编码值起作用: "{\"messages\":{\"message\":\"This is a test\"}}";
但不是lastHighlightedObject.GetComponent<OBClick>().name;
这是我的代码:
public void NextButton()
{
if (highlightSet == true)
{
var httpWebRequest =
(HttpWebRequest) WebRequest.Create("https://HIDDEN_URL.firebaseio.com/brokenComp.json");
httpWebRequest.ContentType = "application/json";
httpWebRequest.Method = "PUT";
using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
{
string missingObjectCount = lastHighlightedObject.GetComponent<OBClick>().name;
streamWriter.Write(missingObjectCount);
}
var httpResponse = (HttpWebResponse) httpWebRequest.GetResponse();
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
var result = streamReader.ReadToEnd();
Debug.Log(result);
}
// When everything is Okay, it will load the scene.
SceneManager.LoadScene("Quiz");
}
该服务似乎需要某种 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);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.