我目前正在使用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连接限制有关,但我目前无法找到任何解决方案。
任何帮助表示赞赏。