我从stackoverflow中的某处获得了这段代码.我无法理解.它用于登录youtube.我是C#和OOPS的新手.所以任何人都可以向我解释几句话:
1)在第3行
HttpWebRequest request = GetNewRequest("https://accounts.google.com/ServiceLoginAuth", cookies);
Run Code Online (Sandbox Code Playgroud)
HttpWebRequest是一个类,请求是一个对象.但为什么之后不使用New关键字呢?什么是"GetNewRequest"?这是一种方法吗?大多数时候我们使用New关键字的类的构造函数.那么我可以得出结论,我可以使用该类中的任何方法吗?没有必要使用new关键字和构造函数?
2)在第6行
Dictionary<string, string> parameters = new Dictionary<string, string>
Run Code Online (Sandbox Code Playgroud)
字典是类,参数是对象.但这是什么<string, string>?我从未见过参数可以传递给一个类.
3)在第7行
{
{"continue","https%3A%2F%2Fwww.youtube.com%2Fsignin%3Faction_handle_signin%3Dtrue%26feature%3Dsign_in_button%26nomobiletemp%3D1%26hl%3Den_US%26next%3D%252F"},
{"service","youtube"},{"uilel","3"},{"dsh","157212168103955870"},{"hl","en_US"},
{"GALX","PTqcwpZb2aE"},{"pstMsg","1"},{"dnConn",""}, {"checkConnection","youtube%3A248%3A1"},
{"checkedDomains","youtube"}, {"timeStmp",""}, {"secTok",""}, {"Email","username"}, {"Passwd","password"},
{"signIn","Sign+in"}, {"PersistentCookie","yes"}, {"rmShown","1"}};
Run Code Online (Sandbox Code Playgroud)
我不明白这是什么?它不适合我在C#中读到的任何语法.这是我以前从未见过的.
完整的代码
public void Login()
{
HttpWebRequest request = GetNewRequest("https://accounts.google.com/ServiceLoginAuth", cookies);
request.Referer = "https://accounts.google.com/ServiceLogin?passive=true&continue=https%3A%2F%2Fwww.youtube.com%2Fsignin%3Faction_handle_signin%3Dtrue%26feature%3Dsign_in_button%26nomobiletemp%3D1%26hl%3Den_US%26next%3D%252F&uilel=3&hl=en_US&service=youtube";
request.Host = "accounts.google.com";
Dictionary<string, string> parameters = new Dictionary<string, string>{
{"continue","https%3A%2F%2Fwww.youtube.com%2Fsignin%3Faction_handle_signin%3Dtrue%26feature%3Dsign_in_button%26nomobiletemp%3D1%26hl%3Den_US%26next%3D%252F"},
{"service","youtube"},{"uilel","3"},{"dsh","157212168103955870"},{"hl","en_US"},
{"GALX","PTqcwpZb2aE"},{"pstMsg","1"},{"dnConn",""}, {"checkConnection","youtube%3A248%3A1"},
{"checkedDomains","youtube"}, {"timeStmp",""}, {"secTok",""}, {"Email","username"}, {"Passwd","password"},
{"signIn","Sign+in"}, {"PersistentCookie","yes"}, {"rmShown","1"}};
HttpWebResponse response = MakeRequest(request, cookies, parameters);
response.Close();
}
Run Code Online (Sandbox Code Playgroud)
GetNewRequest将是一个实际创建并返回实例的方法HttpWebRequest.所以,new在打电话之前不需要GetNewRequest.new仅当您在声明的同一行中调用类型的构造函数时才需要它.<string, string>声明之后Dictionary指定键和值的类型,因为Dictionary<TKey, TValue>是一个泛型类型._
Dictionary<string, string> parameters = new Dictionary<string, string>();
parameters.Add("continue","https%3A%2F%2Fwww.youtube.com%2Fsignin%3Faction_handle_signin%3Dtrue%26feature%3Dsign_in_button%26nomobiletemp%3D1%26hl%3Den_US%26next%3D%252F");
parameters.Add("service","youtube");
// etc.
Run Code Online (Sandbox Code Playgroud)