Те же грабли - не могу получить страницу
От: Spar  
Дата: 07.03.06 15:49
Оценка:
Добрый день
надо получить страницу
простой ввод строки в ИЕ проходит, даже с другими именами (показан в комментарии) — хотя в сорсе их нет
а программно — нет, получаю все ту же дефолт
сейчас даже сделал все по шаблону приводимому на форуме, писали что работает ... без изменений

Привожу для удобства код с форума, вы наверняка его уже видели, быстрее будет разобраться, хотя вроде действительно странно что не работает. И еще вопрос — почему ссылка в комментарии работает?

string strURL = @"http://www.baxglobal.com/Tracking/default.aspx";
string strNum = "733459";
CookieContainer cookies = new CookieContainer();
string strRespDflt = GetUrlContent(strURL, null, ref cookies, true);
string strViewState = ExtractViewState(strRespDflt);
string strReq = string.Format(@"cboTrackBy=H&txtTrackBy={0}&__VIEWSTATE={1}",strNum, strViewState);
byte[] buffer = Encoding.GetEncoding(1252).GetBytes(strReq);
string strResp = GetUrlContent(strURL, buffer, ref cookies, false);
using(StreamWriter swr = new StreamWriter(@"C:\Documents and Settings\vadim\Desktop\MyPage.txt", false, Encoding.GetEncoding(1252)))
{
swr.WriteLine(strResp);
}
//HttpWebRequest myHttpWebRequest=(HttpWebRequest)WebRequest.Create("http://www.baxglobal.com/Tracking/default.aspx?trackby=H&trackbyno=733460");


static private string GetUrlContent(string url, byte[] param, ref CookieContainer cooks, bool useGet)
{
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
req.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)";
req.CookieContainer = cooks;
req.KeepAlive = true;
if(!useGet)
{
req.Method = "POST";
req.ContentType = @"application/x-www-form-urlencoded";
using (Stream streamReq = req.GetRequestStream())
{
streamReq.Write(param, 0, param.Length);
}
}
string strResp = string.Empty;
try
{
using(Stream streamResp = ((HttpWebResponse)req.GetResponse()).GetResponseStream())
{
strResp = new StreamReader(streamResp, Encoding.GetEncoding(1252)).ReadToEnd();
}
}
catch(Exception ex)
{
strResp = ex.ToString();
}
return strResp;
}
static private string ExtractViewState(string content)
{
Regex _regex = new Regex(@"<input[\s\S]+?name=""__VIEWSTATE""[\s\S]+?value=""(?<value>[\s\S]+?)\""[\s\S]*?/>", RegexOptions.IgnoreCase | RegexOptions.Compiled);
Match _match = _regex.Match(content);
return System.Web.HttpUtility.UrlEncodeUnicode(_match.Success ? _match.Groups["value"].Value : string.Empty);
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.