HttpWebRequest随机'请求超时'异常

时间:2016-06-10 11:18:26

标签: c# unity3d timeout httpwebrequest system.net.webexception

我目前正在使用Unity进行开发(特别是使用C#)并且我遇到了HttpWebRequest - HttpWebResponse随机超时。

我有一些方法可以向我在本地计算机(XAMPP)上托管的服务器发送POST请求,以使用各种PHP脚本,这些脚本将从MySQL数据库(托管XAMPP)获取信息并以JSON格式回馈这些信息格式。
然后我用我的C#脚本处理这些JSON信息。

问题在于,当我运行第一个测试时,一切都很好:我可以从我的服务器获取JSON数据并在调试控制台中显示它。
当我运行第二个测试时,会引发WebException并显示错误:

WebException - The request timed out

在第二次测试之后,如果我一次又一次地跑,问题会随机出现 我遵循了我在互联网上找到的关于如何正确设置webrequest的所有准则 - webresponse,特别是我尝试使用ServicePoint.DefaultConnectionLimit和ServicePoint.MaxServicePointIdleTime,没有任何结果。 我的方法的一般结构(关于Web请求/响应部分)是这样的:

public void WebMethod(){
    string post_url = "http://localhost/service.php?someparam=1&someparam=2";
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(post_url);
    request.Method = "POST";
    request.KeepAlive = false;
    request.Timeout = 5000;
    request.Proxy = null;

    string Response = "";
    try
    {
        using (HttpWebResponse resp = request.GetResponse() as HttpWebResponse)
        {
            using (Stream objStream = resp.GetResponseStream())
            {
                using (StreamReader objReader = new StreamReader(objStream, Encoding.UTF8))
                {
                    Response = objReader.ReadToEnd();
                    objReader.Close();
                }
                objStream.Flush();
                objStream.Close();

            }

            resp.Close();

        }
    }catch(WebException e)
    {
        Debug.Log(e.Message);

    }
    finally
    {

        request.Abort();
    }

    //tried this one after reading some related answers here on StackOverflow,without results
    //GC.Collect();

    Debug.Log("SERVER RESPONSE:" + Response);

    //Response Handling
    }

我知道它可能与HttpWebRequest / Response上的错误中止有关,或者可能与HTTP 1.1连接限制有关,但我目前无法找到任何解决方案。
任何帮助表示赞赏。

0 个答案:

没有答案