Sequence of HttpWebRequest



我当前正在为FTP的管理用户自动化Web界面。

我正在尝试使用httpwebrequest进行此操作,我有一个呼叫在网站上记录我,第二个呼叫是为FTP访问添加新用户的supose。

我在浏览器中尝试了我的两个URL,它们起作用,最终创建了一个用户。

string login = "https://www.ftpsite.net/./panel/index.php?txvUsername=myaccount&txvPassword=myPassword&submitButton=Login";

当我在浏览器地址栏中输入时,这让我登录了。

创建用户的第二个调用如下。

string createUser = "https://www.ftpSite.net/panel/ftpsites/updatelogin?login_id=&login=toto123&realname=realnametoto&homedir=root&passwd=superpassword11&expdate=01-01-2100&neverExpire=on&quota_value=0&quota_unit=GB&group_id=0&status=on&ftp=on&filelist=on&ftp_download=on&http=on&web_filelist=on&web_download=on&email=";

当我在浏览器的地址栏中输入该用户时,如果它遵循将我们登录的用户。

我的问题是我正在尝试使用httpwebrequest进行此操作,而没有成功。我可以登录自己,但是当我尝试创建用户时,它似乎返回一个"不良"错误代码,说我已经创建了太多用户,这并非如此,因为我可以在呼叫后创建更多。这是我与htttprequest一起使用的代码

        _datCookie = new CookieContainer();
        HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(login);
        httpWebRequest.Method = "POST";
        httpWebRequest.CookieContainer = _datCookie;
        WebResponse response = httpWebRequest.GetResponse();
        referer = response.ResponseUri.AbsoluteUri;
        Stream requestStream = response.GetResponseStream();
        StreamReader streamReader = new StreamReader(requestStream);
        _datCookie = httpWebRequest.CookieContainer;
        response.Close();

        httpWebRequest = (HttpWebRequest)WebRequest.Create(createUser);
        httpWebRequest.CookieContainer = _datCookie;
        httpWebRequest.Referer = referer;
        httpWebRequest.Method = "POST";

        response = httpWebRequest.GetResponse();
        requestStream = response.GetResponseStream();
        streamReader = new StreamReader(requestStream);

        webBrowser.DocumentText = streamReader.ReadToEnd();
        response.Close();

我抓到的东西试图在这里模仿而没有成功。

您确定它们应该是发布请求吗?URL似乎在查询弦中都有所有字段,这表明应该得到请求。

基于提琴手的屏幕截图,您需要使用体内的字段来提出邮政请求,而不是查询弦:

var cookies = new CookieContainer();
// Request 1 : Login
var request = (HttpWebRequest)WebRequest.Create("https://www.ftpsite.net/./panel/index.php");
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.CookieContainer = cookies;
string postData = "txvUsername=myaccount&txvPassword=myPassword&submitButton=Login";
byte[] postBytes = Encoding.Default.GetBytes(postData);
request.ContentLength = postBytes.Length;
using (Stream bod = request.GetRequestStream())
{
   body.Write(postBytes, 0, postBytes.Length);
}
WebResponse response = request.GetResponse();
string referer = response.ResponseUri.AbsoluteUri;
// Request 2 : Create user
request = (HttpWebRequest)WebRequest.Create("https://www.ftpSite.net/panel/ftpsites/updatelogin");
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.CookieContainer = cookies;
postData = "login_id=&login=toto123&realname=realnametoto&homedir=root&passwd=superpassword11&expdate=01-01-2100&neverExpire=on&quota_value=0&quota_unit=GB&group_id=0&status=on&ftp=on&filelist=on&ftp_download=on&http=on&web_filelist=on&web_download=on&email=";
postBytes = Encoding.Default.GetBytes(postData);
request.ContentLength = postBytes.Length;
using (Stream bod = request.GetRequestStream())
{
   body.Write(postBytes, 0, postBytes.Length);
}
response = request.GetResponse();
requestStream = response.GetResponseStream();
streamReader = new StreamReader(requestStream);
webBrowser.DocumentText = streamReader.ReadToEnd();
response.Close();

最新更新