我正在从一个 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# 字符串是 UTF-16 而 downloadHandler.text:
Returns the bytes from data interpreted as a UTF8 string
问题还在于您如何在服务器上创建响应,以及数据是否以正确的编码和响应类型发送。
您还可以像这样比较每个字符串中的每个字符:(int) str[0] 以检查是否存在隐藏字符或它们是否具有不同的值。
DownloadHandler.data 让您可以访问我认为更好用的原始字节。您可以使用 BitConverter
从字节数组中获取 int。
关于c# - 为什么我的 http 请求响应不能解析成一个整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55744824/