C# 为什么我的http请求-响应不能解析为整数?
我正在从一个php文件进行UnityWebRequest,并得到一个字符串作为响应(或者我认为它是一个字符串?) 我试图分析返回的响应,但它一直返回0。我将提供我所有的代码和尝试,但似乎没有什么工作,一切返回0 尝试1:C# 为什么我的http请求-响应不能解析为整数?,c#,unity3d,httprequest,tryparse,C#,Unity3d,Httprequest,Tryparse,我正在从一个php文件进行UnityWebRequest,并得到一个字符串作为响应(或者我认为它是一个字符串?) 我试图分析返回的响应,但它一直返回0。我将提供我所有的代码和尝试,但似乎没有什么工作,一切返回0 尝试1: IEnumerator GetConversationID(int user_id) { WWWForm conn = new WWWForm(); conn.AddField("cmd", "get_users_conversation_id"); c
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”
试试看四点:
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);
}
调试“This 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”我认为您有这个问题,因为不同的编码类型。downloadHandler.text时,C#字符串为UTF-16: 从解释为UTF8字符串的数据返回字节 问题还在于如何在服务器上创建响应,以及数据是否以正确的编码和响应类型发送 您还可以像这样比较每个字符串中的每个字符:(int)str[0]以检查是否存在隐藏字符或它们是否具有不同的值
DownloadHandler.data允许您访问原始字节,我认为使用原始字节更好。您可以使用
位转换器
从字节数组中获取int 尝试将yield return
分成两行,并在response.SendWebRequest()的返回值中添加Debug.Log
。这可能会让您有更多的了解。请尝试将字符串设置为response.downloadHandler.text.ToString(),并解析该字符串。nope仍然返回0