2014-02-28 32 views
0

嗨,我的代码有问题。当程序第一次运行时,它向arduino上的服务器发送一个http请求。第一次请求总是非常缓慢,我的表单持续10-20秒。接下来的请求工作得很好,只有第一次请求有问题,并且当我关闭服务器并尝试请求时。还有就是我的请求函数(SRY我的英语水平):当发送http请求时,形式卡住[c#]

private string SubmitData(string postData) 
    { 
     try 
     { 
      string req = ""; 
      req = "http://" + ip + "/" + postData; 


      WebRequest request = WebRequest.Create(req); 
      request.Method = "GET"; 
      request.ContentType = "application/x-www-form-urlencoded"; 


      WebResponse response = request.GetResponse(); 
      Stream stream = response.GetResponseStream(); 

      StreamReader sr = new StreamReader(stream); 

      String rower = sr.ReadToEnd(); 

      sr.Close(); 
      stream.Close(); 
      return rower; 
     } 
     catch (Exception ex) 
     { 
      return "ERR"; 
     } 
    } 
+0

你的问题是什么? – copa017

+0

我的问题是如何避免我的问题:)。有什么办法可以设置等待响应的最长时间吗?或者如何在没有“卡住问题”的情况下发送我的请求? – user3364397

+0

只能通过在另一个线程(即BackgroundWorker)中移动通信内容的代码来避免“无响应的GUI”。当然你可以减少HttpWebRequest.Timeout,但是你的第一个请求没有成功。 – copa017

回答

0

(会后本作评论,但不足够的冷静...)

我不能回答为什么第一个请求是缓慢的,但你确定它不是第一次很慢的服务器吗?

如果你想限制最大等待时间,你可以通过投掷引发WebException设置为WebExceptionStatus.Timeout状态字段更改超时值

WebRequest.Timeout = 5000; // Units of ms 

http://msdn.microsoft.com/en-us/library/system.net.webrequest.timeout(v=vs.110).aspx“子类信号超时。 '