C# 用于向网站提交和保存数据的HttpRequest Post方法

C# 用于向网站提交和保存数据的HttpRequest Post方法,c#,http,C#,Http,我正在尝试登录一个用户名密码必需的网站,并用httprequest-post方法向该网站提交一些数据。你可以认为这个网站就像一个需要先登录的博客网站。我想做的是先登录这个网站,然后进入发布部分,在这个网站的文本框中写一些东西,然后点击提交按钮发布我写的东西 到目前为止,我可以使用http get方法登录此网站,并从该get方法响应中获取所需的viewstate、eventValidation值和Cookie,并使用我的用户名和密码在我的post方法的postData中使用它们,然后我可以登录。然

我正在尝试登录一个用户名密码必需的网站,并用httprequest-post方法向该网站提交一些数据。你可以认为这个网站就像一个需要先登录的博客网站。我想做的是先登录这个网站,然后进入发布部分,在这个网站的文本框中写一些东西,然后点击提交按钮发布我写的东西

到目前为止,我可以使用http get方法登录此网站,并从该get方法响应中获取所需的viewstate、eventValidation值和Cookie,并使用我的用户名和密码在我的post方法的postData中使用它们,然后我可以登录。然后我也可以使用cookies进入发布部分,我也可以从前面的get方法获得cookies。但当我尝试在本节中编写一些内容并单击发布(我使用telerik fiddler跟踪网站流量)时,我的post方法似乎需要两个值:“RadStyleSheetManager1_TSSM”和“RadScriptManananer_TSM”。以下是从telerik fiddler获取的post数据:

RadStyleSheetManager1_TSSM=%3BTelerik.Web.UI%2C+Version%3D2013.3.1114.40%2C+Culture%3Dneutral%2C+PublicKeyToken%3D121fae78165ba3d4%3Atr-TR%3A8d3dfe81-f887-4a80-ad14-8e882b52e5e6%3A45085116%3A92753c09%3BTelerik.Web.UI.Skins%2C+Version%3D2013.3.1114.40%2C+Culture%3Dneutral%2C+PublicKeyToken%3D121fae78165ba3d4%3Atr-TR%3Ab4b6f2ef-e084-406b-ab93-e85df8d3c504%3A929e740d%3Abf721433&radScriptMananer_TSM=%3B%3BSystem.Web.Extensions%2C+Version%3D4.0.0.0%2C+Culture%3Dneutral%2C+PublicKeyToken%3D31bf3856ad364e35%3Atr-TR%3Ab7585254-495e-4311-9545-1f910247aca5%3Aea597d4b%3Ab25378d2%3BTelerik.Web.UI%2C+Version%3D2013.3.1114.40%2C+Culture%3Dneutral%2C+PublicKeyToken%3D121fae78165ba3d4%3Atr-TR%3A8d3dfe81-f887-4a80-ad14-8e882b52e5e6%3A16e4e7cd%3Aed16cbdc%3Af7645509%3A88144a7a%3A24ee1bba%3A92fe8ea0%3Af46195d3%3Afa31b949%3A874f8ea2%3A19620875%3A490a9d4e%3Abd8f85e4&__EVENTTARGET=&__EVENTARGUMENT=&__VIEWSTATE=6wx4EYFyJl3ifqKMXnl73eUuSZ5GDUmQeS37%2B0pXuuxST2MQswOtz0TNAdQJAn1EJAVVOpBNwfMw%2Bv9T1h9QV7RP223s%2BKW2V4v7cw5DRjF8dCD6aPRy%2Fc05L%2FN4%2F6fk&__VIEWSTATEGENERATOR=F9DFCEF0&__SCROLLPOSITIONX=0&__SCROLLPOSITIONY=484.5&__VIEWSTATEENCRYPTED=&__EVENTVALIDATION=EoL4Hl1K4OYVfImHw6G258yEia9jidq0Of7D7aKvXV%2BtS%2FfPHY4oLQCLqczmD%2BfNotKYIJEYlbiZKLdoVSZs%2B7289pLFwVx43dXp2rQE5YFx9GEj0zXsDQUVL%2Bl1D%2F9qjX%2F7crYSCD1GO8zOyu6Yc4cIA4LYn2z88CBb0PEsRnLg90mipkZWXlkSMAMBYPC0D1vkop5GTJedn6exYcn52Q%2F%2Fj7%2BI8uVeW3LutytHQJVVqTev0n3gdVV6lc9arNMRpgeKdC8gmRZG8tmgiXqHVL9EHUnwAitWXgXMughl4D3xm%2FWbvZFH1LBtGe2djmpwZIF9NptxOpTRzKCJ18wywKRPdlMiM9Et6XLW5b90nY59qD8rAYJte2lzJ431lc9%2FkG%2Fkt5on%2B9%2FUl406dkabpV8HlPQK3tzfY4jOCxkoRgG7YRursHknTzhCTSXrFRRu3Fm3z0fK54c%2BVSukL68gP7L5tewoAXI4BPhSBpAKxglEBCkYe2vHrKZegarmuiMvL1bd08I5uVbX7o0XHm9lg0b2N2ZmltxxIFWvDzGa5BOIb0eq3Eoa%2FitJY%2BPI%2BfKyjerfU4607yeeGBW3MKk9g1y%2FMqeq0usnuvAj%2FjpDsgjdTLxVitTlxhmm4OleQUugb0AnuLLjquC34qx9YmzTfh3cbeT7G8b8niWM4%2FqOlQn1yYa%2FThr4QTHjORGlX81n6eStkkV5VejLfnuW6DDcN3tmMHPCXdUKy3XkwUvRiDeABv1SnvabWTytF3qmQH9xBfi3neofT%2FfmpFR5WPyXnoBFmGHXWHYAiySvs%2FklNc5NKakr8ncya9CYuuBWbegQolJNonKEtuKwVpPBRtTuufmh9f05IA3NEjYCe2BYvUZOOEZ8z7II1Vj6QpnyrKFzBIWLa4WhxoT7A2loA%2FUpBJoxajq7s8T2SYlO4SUU11ApkmtZNYIqppxaAj9HIyRldWQEpO859UXaXFLZ8jfaQLeD5DR8xSnQcYC5u4SzQBh3lHJP0dL6D4uhdLszF%2Ffs91vsRYwLscAL1W%2FF4B4E0pnQH3eoffoUuBKmfmLohB7TdgZB2j34NDApXamsa5XJtC6ulMPorsOcJc%2Flkguy2Q%3D%3D&ctl00%24PageId=&ctl00%24hIlk=1&ctl00%24lblSayfaSozlesme=&ctl00%24ContentPlaceHolder1%24txtDosyaNoAra=3075924&ctl00%24ContentPlaceHolder1%24ucYSTDosyaBilgileri%24ucFaizHesaplamaTarih%24txtTarih=05.05.2020&ctl00%24ContentPlaceHolder1%24btnYeniNotEkle=Yeni+Not+Ekle&ctl00_MessageWindowManager_ClientState=&ctl00_RadWindowMesajGoster_ClientState=&ctl00_wPrint_ClientState=&ctl00_PrintWindow_ClientState=&ctl00_RadWindowPopup_ClientState=
正如您所看到的,post数据太长,但我认为失败的原因是我无法捕获“RadStyleSheetManager1_TSSM”和“RadScriptManananer_TSM”值。使用post方法提交某些数据需要两个值,还是我做错了其他事情

下面是我的主代码和主代码中使用的http post方法。谢谢你的帮助

注:我是这个网站的新手,所以如果我不能充分告知我的问题,请警告我。我真的很想实现这个职位的事情

主代码

        string postData2 = "RadStyleSheetManager1_TSSM=%3BTelerik.Web.UI%2C+Version%3D2013.3.1114.40%2C+Culture%3Dneutral%2C+PublicKeyToken%3D121fae78165ba3d4%3Atr-TR%3A8d3dfe81-f887-4a80-ad14-8e882b52e5e6%3A45085116%3A92753c09%3BTelerik.Web.UI.Skins%2C+Version%3D2013.3.1114.40%2C+Culture%3Dneutral%2C+PublicKeyToken%3D121fae78165ba3d4%3Atr-TR%3Ab4b6f2ef-e084-406b-ab93-e85df8d3c504%3A929e740d%3Abf721433&radScriptMananer_TSM=%3B%3BSystem.Web.Extensions%2C+Version%3D4.0.0.0%2C+Culture%3Dneutral%2C+PublicKeyToken%3D31bf3856ad364e35%3Atr-TR%3Ab7585254-495e-4311-9545-1f910247aca5%3Aea597d4b%3Ab25378d2%3BTelerik.Web.UI%2C+Version%3D2013.3.1114.40%2C+Culture%3Dneutral%2C+PublicKeyToken%3D121fae78165ba3d4%3Atr-TR%3A8d3dfe81-f887-4a80-ad14-8e882b52e5e6%3A16e4e7cd%3Aed16cbdc%3Af7645509%3A88144a7a%3A24ee1bba%3A92fe8ea0%3Af46195d3%3Afa31b949%3A874f8ea2%3A19620875%3A490a9d4e%3Abd8f85e4&__EVENTTARGET=&__EVENTARGUMENT=&__LASTFOCUS=&__VIEWSTATE=" + viewState2 + "&__VIEWSTATEGENERATOR="+ viewStateGenerator2 +"&__SCROLLPOSITIONX=0&__SCROLLPOSITIONY=682.5&__VIEWSTATEENCRYPTED=&__EVENTVALIDATION=" + eventValidation2 + "&ctl00%24PageId=&ctl00%24hIlk=1&ctl00%24lblSayfaSozlesme=&ctl00%24ContentPlaceHolder1%24txtDosyaNoAra=2022851&ctl00%24ContentPlaceHolder1%24ucYSTDosyaBilgileri%24ucFaizHesaplamaTarih%24txtTarih=05.05.2020&ctl00%24ContentPlaceHolder1%24ddlMalBilgiTuru=1&ctl00%24ContentPlaceHolder1%24ddlDigerBorclu=0&ctl00%24ContentPlaceHolder1%24txtPlakaNo=deneme&ctl00%24ContentPlaceHolder1%24txtMarka=deneme&ctl00%24ContentPlaceHolder1%24txtModel=deneme&ctl00%24ContentPlaceHolder1%24txtModelYili=2010&ctl00%24ContentPlaceHolder1%24ddlAracTuru=2&ctl00%24ContentPlaceHolder1%24txtAracAciklama=deneme&ctl00%24ContentPlaceHolder1%24btnMalVarlikKaydet=Kaydet&ctl00_MessageWindowManager_ClientState=&ctl00_RadWindowMesajGoster_ClientState=&ctl00_wPrint_ClientState=&ctl00_PrintWindow_ClientState=&ctl00_RadWindowPopup_ClientState=";
        string source5 = HttpMethods.Post("https://avukat.ckbogazici.com.tr/YTS/DosyaBilgileri.aspx?DosyaUN=" + ytsNo, "https://avukat.ckbogazici.com.tr/YTS/DosyaBilgileri.aspx?DosyaUN=" + ytsNo, postData2, cookies, "application / x - www - form - urlencoded", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9");
        if (source5.Contains("btnNotKaydet"))
        {
            MessageBox.Show("Submitted succesfully");
        }
        else
        {
            MessageBox.Show("Problem!");
        }
POST方法

       public static string Post(string url, string referer, string postData, CookieContainer cookies, string contentType, string accept)
    {
        HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
        req.Method = "POST";
        req.CookieContainer = cookies;
        req.Referer = referer;
        req.UserAgent = "";
        req.ContentType = contentType;
        req.Accept = accept;
        req.ContentLength = postData.Length;

        Stream postStream = req.GetRequestStream();
        byte[] postBytes = Encoding.ASCII.GetBytes(postData);
        postStream.Write(postBytes, 0, postBytes.Length);
        postStream.Dispose();

        HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
        cookies.Add(resp.Cookies);
        StreamReader reader = new StreamReader(resp.GetResponseStream());
        string src = reader.ReadToEnd();
        reader.Dispose();          

        return (src);
这是网站发布部分的源代码。如您所见,“RadStyleSheetManager1_TSSM”和“RadScriptManananer_TSM”的值为空,因此我无法捕捉它



可能是错误的MIME类型导致了故障:
“application/x-www-form-urlencoded”
看起来有多余的空格。使其成为
“application/x-www-form-urlencoded”
注意,类已经过时,请改用。噢,非常感谢,我没有看到多余的空格。您为我节省了很多时间。可能是错误的MIME类型导致了故障:
“application/x-www-form-urlencoded”
看起来有多余的空格。使其成为
“application/x-www-form-urlencoded”
注意,类已经过时,请改用。噢,非常感谢,我没有看到多余的空格。你救了我很多thanx兄弟。