我遇到了一个看起来很简单的网站,我非常有信心能够使用HttpWebRequest读取数据并能够执行GET和POST请求.GET请求工作正常.POST请求也不会产生任何错误,但仍然发布的表单数据对返回的结果没有影响.发布的表单数据具有按日期过滤数据的字段,但无论是否发布了所有必需数据,都不会过滤返回的数据.我添加了每个标题,表单数据以及添加了请求的cookie.
该网页的网址是http://www.bseindia.com/corporates/Insider_Trading_new.aspx?expandable=0
这看起来像一个非常普通的网站,但由于它是一个aspx页面,涉及ViewState和事件验证,因此预计这不会很容易.
我的第一步是使用Fiddler分析网站的GET和POST,这让我感到惊讶,因为Fiddler没有为这个网址捕获任何流量.我试过查尔斯,但这本身并没有抓住这个网址.除此之外,这个Url Fiddler和Charles都捕获了其他一切.我还想提一下,当我使用HttpWebRequest从控制台应用程序调用Url时,Fiddler和Charles都捕获了它,但他们没有从Chrome,FireFox和Internet Explorer 11捕获它.
因此,我使用FireFox中的开发人员工具分析了网络活动,所有内容都可见,其中包括(标题,参数和Cookie).在Chrome中,没有Cookie存在.当我通过创建HttpWebRequest检查cookie并得到响应时,没有cookie存在.所以这个网站真的很奇怪.
我以某种方式设法创建一个简单的函数来创建请求并获得响应.我正在做的是我首先创建一个GET请求并获取网站字符串并从中提取Viewstate,EventValidation等.我使用此信息在第二个HttpWebRequest中使用,这是一个帖子.现在一切正常,我收到的回复却不如预期.我想要两个给出日期之间的记录,我已经在表单数据中指定了这些日期,但POST请求仍然不返回过滤后的数据.我已经提到了我在下面创建的函数,我将非常感谢为什么会发生这种情况以及如何处理它的任何建议.要理解这一点对我来说是一个挑战,因为我无法理解为什么这个简单的网站没有出现在Fiddler中.(这使用Javascript Postback)
代码可能看起来很长而且很可怕,但它非常简单直接.
Try
' First GET Request to obtain Viewstate, Eventvalidation etc
Dim objRequest2 As Net.HttpWebRequest = DirectCast(HttpWebRequest.Create("http://www.bseindia.com/corporates/Insider_Trading_new.aspx?expandable=0"), HttpWebRequest)
objRequest2.Method = "GET"
objRequest2.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"
objRequest2.Headers.Add("Accept-Encoding", "gzip, deflate")
objRequest2.Headers.Add("Accept-Language", "en-GB,en-US;q=0.8,en;q=0.6,ur;q=0.4")
objRequest2.KeepAlive = True
objRequest2.ContentType = "application/x-www-form-urlencoded"
objRequest2.Host = "www.bseindia.com"
objRequest2.UserAgent = "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36"
objRequest2.AutomaticDecompression = DecompressionMethods.Deflate Or DecompressionMethods.GZip
Dim LoginRes2 As Net.HttpWebResponse
Dim sr2 As IO.StreamReader
LoginRes2 = objRequest2.GetResponse()
sr2 = …Run Code Online (Sandbox Code Playgroud) 在体验4.5的新异步和等待功能时,我想在进一步讨论之前清除一些混淆.我一直在阅读不同的文章和关于SO的不同问题,它帮助我了解Async和Await如何工作.我将尝试将我的理解和困惑放在这里,并且如果某些代码教育我和其他正在寻找相同事物的人,我将非常感激.我用非常简单的措辞来讨论这个问题.
因此使用Async以便编译器知道由Async标记的方法包含Await操作(长操作).最新框架包含用于异步操作的不同新内置方法.
内置的Async函数(如connection.OpenAsync,ExecuteScalarAsync等)与Await关键字一起使用.我不知道这些异步方法的内部工作,但我强烈的猜测是,他们正在使用任务.
我可以将此作为Await与任何实现Task的方法的一般规则.因此,如果我需要创建自己的执行长操作的方法,那么我将创建它作为任务,当它被调用时,我将使用Await Keyword吗?
第二个最重要的是,将方法创建为异步或将其创建为任务的经验法则是什么.例如,
public void SampleMain()
{
for (int i = 1; i <= 100; i++)
{
DataTable dt = ReadData(int id);
}
}
public DataTable ReadData(int id)
{
DataTable resultDT = new DataTable();
DataTable dt1 = new DataTable();
// Do Operation to Fill DataTable from first connection string
adapter.Fill(dt1);
DataTable dt2 = new DataTable();
// Do Operation to Fill DataTable from first connection string
adapter.Fill(dt2);
// Code for combining datatable and returning the resulting datatable
// …Run Code Online (Sandbox Code Playgroud) 我是Asp.net开发人员,但对Asp.net Identity框架非常陌生.我一直在研究示例应用程序,并且在Identity上也遵循了一些教程,但我仍然无法完全掌握这个概念.我非常坚定地掌握Asp.net会员资格,但身份似乎与会员资格无关.我会解释到目前为止我做了什么.
我正在创建一个简单的应用程序,其中我遵循代码第一种方法.我为User创建了实体模型,它继承自IdentityUser并且有一些额外的字段.以下是User的实体模型.
public class User : IdentityUser
{
public int? CompanyID { get; set; }
public bool? CanWork { get; set; }
public bool? CanSearch { get; set; }
public Company Company { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
现在在示例中,人们使用名称ApplicationUser,但出于我自己的目的,我使用了名称User.User或ApplicationUser模型中还有一个方法,
public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<User> manager)
{
CookieAuthenticationOptions.AuthenticationType
var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);
// Add custom user claims here
return userIdentity;
}
Run Code Online (Sandbox Code Playgroud)
我无法理解这种方法的目的.同样从一个例子我使用以下模型的角色,
public class Role : IdentityRole
{
public Role()
{
}
public Role(string roleName, string description)
: base(roleName)
{ …Run Code Online (Sandbox Code Playgroud) 我已经看到了类似的问题,因为我必须与VB.net合作开展一个项目,我坚持相当简单的事情.
If (myValue IsNot Nothing) And (myValue.Length > 12) Then
' do some stuff
End If
Run Code Online (Sandbox Code Playgroud)
现在,当myValue为Nothing时,它会给我null引用异常.我也尝试过,
If (Not myValue Is Nothing) And (myValue.Length > 12) Then
' do some stuff
End If
Run Code Online (Sandbox Code Playgroud)
在C#中,我非常使用它很容易但在VB.net中我找不到任何方式.
我对 JSON.net 有点熟悉,并且可以使用基本结构(最多一个子级)反序列化 JSON。我目前正在反序列化从 Netatmo API 返回的 JSON。JSON 的结构对我来说很复杂。以下是 JSON 的基本结构,
_id
place
location
Dynamic Value 1
Dynamic Value2
altitude
timezone
mark
measures
Dynamic Value 1
res
Dynamic Value 1
Dynamic Value 1
Dynamic Value 2
type
Dynamic Value 1
Dynamic Value 2
modules
Dynamic Value 1
Run Code Online (Sandbox Code Playgroud)
动态值 1 和动态值 2 表示针对每个 id 更改的值。完整的 JSON 如下所示,
{
"body": [{
"_id": "70:ee:50:02:b4:8c",
"place": {
"location": [-35.174779762001, -5.8918476117544],
"altitude": 52,
"timezone": "America\/Fortaleza"
},
"mark": 0,
"measures": {
"02:00:00:02:ba:2c": {
"res": {
"1464014579": …Run Code Online (Sandbox Code Playgroud)