C# 关于HTTP协议
我对HTTP协议非常陌生,但我正在研究它,以便能够自动地认为C#Console应用程序可以在Twitter上创建一个新帐户。 我要做的是,首先做一个GET请求,以便在页面上收集一些数据(例如真实性令牌),然后我将数据发布到为其设计的特定URL。我用于获取操作的URL为“” 然后我进行POST操作,给出所有需要的标题(除了cookie,我不知道cookie对流程是否重要)和我要创建的帐户的格式化数据 问题是:当我启动我的程序时,首先它不会创建任何帐户,然后服务器会回答我将我重定向回www.twitter.com/account/new,感觉我没有填写正确的字段,但我无法了解实际发生的情况 以下是我的主要代码:C# 关于HTTP协议,c#,http,protocols,C#,Http,Protocols,我对HTTP协议非常陌生,但我正在研究它,以便能够自动地认为C#Console应用程序可以在Twitter上创建一个新帐户。 我要做的是,首先做一个GET请求,以便在页面上收集一些数据(例如真实性令牌),然后我将数据发布到为其设计的特定URL。我用于获取操作的URL为“” 然后我进行POST操作,给出所有需要的标题(除了cookie,我不知道cookie对流程是否重要)和我要创建的帐户的格式化数据 问题是:当我启动我的程序时,首先它不会创建任何帐户,然后服务器会回答我将我重定向回www.twit
static void Main(string[] args)
{
// Set up data info
string[] infos = SetUpAccountInfo();
string parsedData= FormDataParsing(infos);
StreamWriter myWriter = null;
StreamReader myReader = null;
CookieContainer cookies = new CookieContainer();
HttpWebRequest objRequest = (HttpWebRequest)WebRequest.Create(POSTSignUpURL);
objRequest.Method = "POST";
objRequest.Host = "twitter.com";
objRequest.ProtocolVersion = HttpVersion.Version11;
objRequest.ContentLength = machin.Length;
objRequest.ContentType = "application/x-www-form-urlencoded";
objRequest.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8";
objRequest.Headers.Add("accept-encoding", "gzip,deflate,sdch");
objRequest.Headers.Add("accept-language", "fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4");
objRequest.Headers.Add("cache-control", "max-age=0");
objRequest.Headers.Add("origin", "https://twitter.com");
objRequest.Referer = "https://twitter.com/signup";
objRequest.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36";
System.Net.ServicePointManager.Expect100Continue = false;
objRequest.CookieContainer = cookies;
try
{
myWriter = new StreamWriter(objRequest.GetRequestStream());
myWriter.Write(parsedData);
}
catch (Exception e)
{
// return e.Message;
}
finally
{
myWriter.Close();
}
HttpWebResponse response = objRequest.GetResponse() as HttpWebResponse;
using (StreamReader sr =
new StreamReader(response.GetResponseStream()))
{
string result = sr.ReadToEnd();
HtmlAgilityPack.HtmlDocument document = new HtmlAgilityPack.HtmlDocument();
document.LoadHtml(result);
// Close and clean up the StreamReader
sr.Close();
}
}
将其与使用web浏览器成功注册时发生的情况进行比较
你会发现不同。Twitter无法告诉您正在使用的客户端程序。问题只能由您发送的内容引起。谢谢您的时间,我会试试看!