我正在我的ASP.NET解决方案中构建一个页面,该页面从第三方API服务中检索大部分数据.
页面本身需要对API进行大约5次单独的不同调用以填充其所有控件,因为每个API请求都会返回不同的数据集.
我想处理我在新线程上进行的每个单独的Web请求,同时减少加载时间.
我正在制作的每个请求都是这样的: -
WebRequest request = WebRequest.Create(requestUrl);
string response = new StreamReader(request.GetResponse().GetResponseStream()).ReadToEnd();
return new JsonSerializer().Deserialize<OccupationSearch>(new JsonTextReader(new StringReader(response)));
Run Code Online (Sandbox Code Playgroud)
首先,我应该尝试这个吗?即,安全吗?并且它会通过多线程来提高性能.
其次,这样做的最佳方法是什么?多线程系统有许多不同的方法,但最适合这项任务的方法是什么?
假设我DateTime.UtcNow在单个方法的两次调用之间有一个很长的简单数学循环。
DateTime.UtcNow如果中间的代码花费的时间超过系统的计时器分辨率(例如 10 毫秒),是否会在同一方法内返回两个不同的值?
推而广之,如果代码在日期转变为新的一天时运行,是否有可能DateTime.UtcNow.Date导致同一方法内出现两个不同的日期?
是否有机会让 http get 请求、读取标头而不是获取正文以减少流量和提高速度?我使用这个代码:
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(u1);
request.AllowAutoRedirect = true;
request.Timeout = 30000;
request.Method = "GET";
request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Safari/537.36";
request.KeepAlive = true;
HttpWebResponse response;
using (response = (HttpWebResponse)request.GetResponse())
{
var res = response.ResponseUri.ToString();
}
Run Code Online (Sandbox Code Playgroud)
所以我只需要结果网址。如果有重定向(位置标头) - 我会得到结果 url。但我不需要身体。使用 GET 方法(不是 HEAD 方法)获得响应以在没有响应正文的情况下获得结果是否真实?