C# 为什么我的http请求-响应不能解析为整数?

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

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

试试看四点:

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