gpt4 book ai didi

c# - 为什么我的 http 请求响应不能解析成一个整数?

转载 作者:太空宇宙 更新时间:2023-11-03 14:43:09 25 4
gpt4 key购买 nike

我正在从一个 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com