簡體   English   中英

為什么我的 http 請求響應不能解析成整數?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM