当前位置: 首页 > 编程语言 > C#

使用带有登录页面的HttpWebRequest发送数据分享

时间:2023-04-10 22:36:53 C#

C#学习教程:使用带有登录页面的HttpWebRequest发送数据admin/_FormsWizard/CreateForm.asp但是我的登录验证有问题。继承我的代码:System.Text.UTF8Encodingencoding=newSystem.Text.UTF8Encoding();字符串postData="ctlMessageID="+348;postData+=("&ctlUserID="+7);postData+=("&ctlTitle="+7);postData+=("&ctlEmail="+"rrawhi@gmail.com");postData+=("&ctlIsSystem="+0);postData+=("&ctlFormBody=");postData+=("&ctlEnableCaptcha=");postData+=("&ctlEmailAttachedFiles=");postData+=("&ctlMailingList=");postData+=("&ctlCommentaryTitle="+1);postData+=("&ctlIsActive="+2);postData+=("&ctlCommentaryPersonID="+6);postData+=("&ctlOrderKey=");postData+=("&Commentary_TextControl_html="+"aaaaaaaaaaaa");postData+=("&controlValue4="+666666);postData+=("&ctlLanguageID="+1);postData+=("&ctlAya="+349);postData+=("&PathInfo="+"dbsFramed,dbsFramed");postData+=("&Caller="+"rawhi");byte[]data=encoding.GetBytes(postData);//准备重新网络请求...HttpWebRequestmyRequest=(HttpWebRequest)WebRequest.Create("http://stage1.darotools.com/Quran.v1.admin/_FormsWizard/CreateForm.asp");myRequest.Method="POST";myRequest.ContentType="application/x-www-form-urlencoded";myRequest.ContentLength=data.Length;流newStream=myRequest.GetRequestStream();//发送数据.newStream.Write(data,0,data.Length);newStream.Close();这是登录页面:www.stage1.darotools.com/Quran.v1.admin/Login.asp提前致谢首先,看起来您实际上并没有发送请求。要向服务器发送POST请求,您需要请求响应:HttpWebResponseresponse=(HttpWebResponse)myRequest.GetResponse();字符串响应内容=空;using(StreamReaderreader=newStreamReader(response.GetResponseStream())){//获取响应的文本内容,如果需要responseContent=reader.ReadToEnd();此外,您发布的页面看起来正在寻找已建立和经过身份验证的会话。首先尝试将凭据发布到登录页面(http://stage1.darotools.com/Quran.v1.admin/Login.asp)。将HttpWebRequest.CookieContainer设置为新的CookieContainer()实例。然后,再次发布到CreateForm.asp页面,但一定要设置一个新的HttpWebRequest.CookieContainer对象,以使用您在发布登录页面时使用的相同CookieContainer实例。从登录页面接收到的cookie将被发送到CreateForm.asp页面,从服务器的角度来看,会话将被“维护”。例如:CookieContainerm_cookies=newCookieContainer();HttpWebRequestmyRequest=(HttpWebRequest)WebRequest.Create("http://stage1.darotools.com/Quran.v1.admin/Login.asp");...HttpWebResponse响应=(HttpWebResponse)myRequest.GetResponse();HttpWebRequestformRequest=(HttpWebRequest)WebRequest.Create("http://stage1.darotools.com/Quran.v1.admin/_FormsWizard/CreateForm.asp");formRequest.CookieContainer=myRequest.CookieContainer;using(StreamReaderreader=newStreamReader(response.GetResponseStream())){//获取响应的文本内容,如果需要responseContent=reader.ReadToEnd();}尝试使用:myRequest.Credentials=newNetworkCredential("username","password","domain");//在表单身份验证的情况下不需要域如果这不起作用,您可以在登录页面上对用户进行身份验证并将CookieContainer传递到那里,然后在请求所需页面时重用CookieContainer。也许这个链接可以帮助你:webrequestloginsessionkeepssessionidonhttpwebrequest这里可能会发生一些不同的事情尝试设置一些凭据myRequest.Credentials=CredentialCache.DefaultCredentials;//如果我们有一个代理,也设置它的信用}并确保您还设置了UserAgent和Accpet设置。myRequest.UserAgent="Foo";myRequest.Accept="*/*";如果你添加这些,我认为你不会有任何问题。以上是C#学习教程:使用带有登录页面的HttpWebRequest发送数据分享的所有内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: