[英]Why can not my http request response parse into an integer?
我正在從一個 php 文件創建一個 UnityWebRequest 並獲取一個字符串作為響應(或者我認為它是一個字符串?)。
我正在嘗試解析返回的響應,但它一直返回 0。我將提供所有代碼並嘗試,但似乎沒有任何效果,一切都返回 0。
嘗試1:
IEnumerator GetConversationID(int user_id)
{
WWWForm conn = new WWWForm();
conn.AddField("cmd", "get_users_conversation_id");
conn.AddField("userid_php", user_id);
UnityWebRequest response = UnityWebRequest.Post("http://katiawashere.gr/qr/func/get_user_info.php", conn);
yield return response.SendWebRequest();
int.TryParse(response.downloadHandler.text, out StaticHolder.user_convid);
Debug.Log("This " + response.downloadHandler.text + "," + StaticHolder.user_convid);
}
調試“這 16,0”
嘗試2:
IEnumerator GetConversationID(int user_id)
{
WWWForm conn = new WWWForm();
conn.AddField("cmd", "get_users_conversation_id");
conn.AddField("userid_php", user_id);
UnityWebRequest response = UnityWebRequest.Post("http://katiawashere.gr/qr/func/get_user_info.php", conn);
yield return response.SendWebRequest();
string m = response.downloadHandler.text;
int.TryParse(m, out StaticHolder.user_convid);
Debug.Log("This " + m + "," + StaticHolder.user_convid);
}
調試“這 16,0”
嘗試3:
IEnumerator GetConversationID(int user_id)
{
WWWForm conn = new WWWForm();
conn.AddField("cmd", "get_users_conversation_id");
conn.AddField("userid_php", user_id);
UnityWebRequest response = UnityWebRequest.Post("http://katiawashere.gr/qr/func/get_user_info.php", conn);
yield return response.SendWebRequest();
int.TryParse(response.downloadHandler.text.ToString(), out StaticHolder.user_convid);
Debug.Log("This " + response.downloadHandler.text.ToString() + "," + StaticHolder.user_convid);
}
調試“這 16,0”
試試4??????:
IEnumerator GetConversationID(int user_id)
{
WWWForm conn = new WWWForm();
conn.AddField("cmd", "get_users_conversation_id");
conn.AddField("userid_php", user_id);
UnityWebRequest response = UnityWebRequest.Post("http://katiawashere.gr/qr/func/get_user_info.php", conn);
yield return response.SendWebRequest();
int.TryParse("16", out StaticHolder.user_convid);
Debug.Log("This " + response.downloadHandler.text + "," + StaticHolder.user_convid);
}
調試“這 16,16”
所以我想我會失去理智。 為什么解析“16”返回 16 作為 int 但解析也是“16”的響應返回 0? 我在這里想念什么。
編輯:如果我使用以下 if 語句,它永遠不會進入,那么交易是什么?
m = response.downloadHandler.text;
n = "16";
if(m.Equals(n))
Debug.Log("Equals");
Debug.Log(m + "," + n);
調試“16,16”
我認為你有這個問題是因為不同的編碼類型。 C# String 是 UTF-16 而 downloadHandler.text:
從解釋為 UTF8 字符串的數據中返回字節
問題還在於您如何在服務器上創建響應,以及數據是否以正確的編碼和響應類型發送。
您還可以像這樣比較每個字符串中的每個字符: (int) str[0] 以檢查是否存在隱藏字符或它們是否具有不同的值。
DownloadHandler.data 使您可以訪問我認為更好用的原始字節。 您可以使用BitConverter
從字節數組中獲取 int。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.