有个蛋疼的需求。。让aspx能运行另一个website某个aspx页面按钮的点击事件的函数 (还不能修改那个website)
所以我就想可以模拟一个HTTP POST REQUEST 去那个页面但是你懂得 aspx页面好多参数 我以前做过类似的 还得自己研究那些POST参数 让网站那边认为是用户通关浏览器点那个按钮 并执行方法请问有没有做好的cs代码 能帮我发出这个post request。就是纠结那些post request的参数
所以我就想可以模拟一个HTTP POST REQUEST 去那个页面但是你懂得 aspx页面好多参数 我以前做过类似的 还得自己研究那些POST参数 让网站那边认为是用户通关浏览器点那个按钮 并执行方法请问有没有做好的cs代码 能帮我发出这个post request。就是纠结那些post request的参数
解决方案 »
- 求解
- 讨论下静态方法 非静态方法的区别,以及在什么时候使用
- 判断用户是否连接1.aspx.如果已经有此连接,再次连接则无效。 或者关闭以前的连接.新连接生效.
- [散分帖]个人准备要做个网站,对SQL语句还比较熟悉,但是对数据库设计感觉头大,请大家推荐我个网站数据库表的资料电子书或博客等...
- 为什么在手机上面查询sqlserver数据库报http 错误 404
- 特急!!!谁会用jmail组件???
- 急问高手:使文件夹能够让 aspnet用户具有写 权限怎样写代码?
- 怎样向 asp.net webform 添加 TreeView 控件,菜单?
- 请问:如何在ASP.net中使用messagebox?
- windows XP环境中安装VS.Net运行稳定吗?微软刚发布的ASPX编辑器哪里能够下载?
- kindeditor-4.1.6中使用的问题
- 怎么把一个BUTTON的VALUE值传递到TEXTAREA光标处
lz可以参考淘宝api,里面有类似的demo
参考下边代码修改
public class GHtmlToImage
{
/// <summary>
/// 地址
/// </summary>
private string _url = "about:blank";
/// <summary>
/// 宽
/// </summary>
private int _width = 800;
/// <summary>
/// 高
/// </summary>
private int _height = 600;
/// <summary>
/// 缩略图宽
/// </summary>
private int _swidth = 320;
/// <summary>
/// 缩略图高
/// </summary>
private int _sheight = 250; private Bitmap _image;
private Bitmap _thumbnailimage;
private object _lock = new object();
private object _lock2 = new object();
private string _charset = "utf-8";
public string Url
{
set { _url = value; }
}
public int Width
{
set { _width = value; }
}
public int Height
{
set { _height = value; }
}
public int SWidth
{
set { _swidth = value; }
}
public int SHeight
{
set { _sheight = value; }
}
public Bitmap Image
{
get { return _image; }
}
public Bitmap ThumbnailImage
{
get { return _thumbnailimage; }
}
public string DocText
{
get;
set;
}
public int runtime
{
get;
set;
}
public GHtmlToImage()
{
Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture;
}
public string Charset
{
set
{
_charset = value; ;
}
}
/*
[STAThreadAttribute]
static void Main()
{
}
*/
public void Init()
{
lock (_lock)
{
Thread _thread = new Thread(new ThreadStart(_GenerateHtmlToImgImage));
_thread.Name = "Galsun.Fcx.htmlToImage";
_thread.SetApartmentState(ApartmentState.STA);
_thread.CurrentUICulture = Thread.CurrentThread.CurrentCulture;
_thread.Start();
_thread.Priority = ThreadPriority.Highest;
TimeSpan ts = new TimeSpan(0, 0, 0, 30);
_thread.Join();
GC.Collect();
GC.Collect();
}
}
[STAThread]
private void _GenerateHtmlToImgImage()
{
Monitor.Enter(this);
try
{
#region 普通
WebBrowser _WebBrowser = new WebBrowser();
_WebBrowser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(WebBrowser_DocumentCompleted);
//_WebBrowser.ProgressChanged += new WebBrowserProgressChangedEventHandler(WebBrowser_ProgressChanged);
_WebBrowser.ScrollBarsEnabled = false;
_WebBrowser.Navigate(_url);
System.Windows.Forms.Timer _tm = new System.Windows.Forms.Timer();
_tm.Interval=1000;
_tm.Tick += new EventHandler(Time_Tick);
_tm.Enabled = true;
//Application.SetCompatibleTextRenderingDefault(false);
Application.Run();
//Application.EnableVisualStyles();
_WebBrowser.Dispose();
#endregion #region 新模式
/*
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
MainForm _form = new MainForm();
_form._url = _url;
_form._width = _width;
_form._height = _height;
_form._swidth = _swidth;
_form._sheight = _sheight;
_form.Width = _width;
_form.Height = _height;
Application.Run(_form);
_image = _form._image;
_thumbnailimage = _form._thumbnailimage;
*/
#endregion
}
finally
{
Monitor.Exit(this); }
}
private void Time_Tick(object sender, EventArgs e)
{
if (runtime > 0)
{
Thread.Sleep(100);
Application.ExitThread();
}
}
private void WebBrowser_ProgressChanged(object sender, WebBrowserProgressChangedEventArgs e)
{
WebBrowser _webBrowser = (WebBrowser)sender;
if (e.CurrentProgress == e.MaximumProgress && _webBrowser.ReadyState == WebBrowserReadyState.Complete)
{
Application.ExitThread();
}
}
private void WebBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
Monitor.Enter(this);
try
{
WebBrowser _webBrowser = (WebBrowser)sender;
if (_webBrowser.ReadyState == WebBrowserReadyState.Complete)
{
//_webBrowser.Document.Encoding = "utf-8";
//_charset = _webBrowser.Document.Encoding;
//DocText = _webBrowser.DocumentText;
//DocText = Encoding.GetEncoding("utf-8").GetString(Encoding.GetEncoding("gbk").GetBytes(_webBrowser.DocumentText));
//Content.GB2312UnicodeConverter.ToUnicode(DocText);
StreamReader sr;
sr = new StreamReader(_webBrowser.DocumentStream, Encoding.GetEncoding(_charset));
DocText = sr.ReadToEnd();
sr.Close();
if(_webBrowser.Document.Body.ScrollRectangle.Height> _height)
{
_height=_webBrowser.Document.Body.ScrollRectangle.Height;
}
_webBrowser.ClientSize = new Size(_width, _height);
//_webBrowser.ScrollBarsEnabled = false;
//Application.DoEvents();
_image = new Bitmap(_webBrowser.Bounds.Width, _webBrowser.Bounds.Height);
_webBrowser.BringToFront();
_webBrowser.DrawToBitmap(_image, _webBrowser.Bounds);
_thumbnailimage = (Bitmap)_image.GetThumbnailImage(_swidth, _sheight, null, IntPtr.Zero);
runtime++;
}
}
finally
{
Monitor.Exit(this);
}
} }
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.IO;
using System.Text.RegularExpressions;
using mshtml;namespace Galsun.QHL
{
public partial class Form_C : Form
{
public string _weburl = string.Empty;
public string _lastNum = string.Empty;
public string _lastCycle = string.Empty;
public int _starCycle;
public int _endCycle;
public string _lastTime = string.Empty;
public string _history = string.Empty;
public int _time = 0;
public bool _chang = false;
public DataGridView dgv_Reg;
public DataGridView dgv_Log;
public TextBox TB_Base;
public TextBox txt_double;
public TextBox txt_Back;
public Label lb_total;
public string _CycleUrl = "";
public int _backtime = 0;
public Form_C()
{
InitializeComponent();
}
/*
string GetResStr(string url, string Encod)
{
WebRequest WReq;
WebResponse WResp;
StreamReader sr;
WReq = WebRequest.Create(url);
WResp = WReq.GetResponse();
sr = new StreamReader(WResp.GetResponseStream(), Encoding.GetEncoding(Encod));
string retValue = sr.ReadToEnd();
sr.Close();
return retValue;
}*/
private void Form_C_Load(object sender, EventArgs e)
{
PageRefresh();
time_Refresh.Enabled = true;
}
private void PageRefresh()
{
//time_Refresh.Enabled = false;
//webBrowser1.Url = webBrowser1.Url;
_time = 0;
webBrowser1.Navigate("http://www.kt02.com/play/7Gourd/map.asp?no-cath=" + DateTime.Now.ToString("yyyyMMddHHmmss"));
} private string GetLastNum()
{
Regex reg = new Regex(@"var tempstr=""(?<Cycle>[\s\S].*)"";");
Match mt = reg.Match(_history);
return mt.Groups["Cycle"].Value;
} private void time_Refresh_Tick(object sender, EventArgs e)
{
_time = _time + 1;
if (_time > 10)
{
PageRefresh();
}
} private void webBrowser2_Navigated(object sender, WebBrowserNavigatedEventArgs e)
{
IHTMLWindow2 win = (IHTMLWindow2)webBrowser2.Document.Window.DomWindow;
string s = @"function confirm(mess) {";
s += @"return true;";
s += @"}";
s += @"function alert(mess) {}";
win.execScript(s, "javascript");
/*
IHTMLDocument2 vDocument = (IHTMLDocument2)webBrowser1.Document.DomDocument;
vDocument.parentWindow.execScript(
"chk_(0)", "javaScript");
*/
} private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
object tlock = new object();
lock (tlock)
{
StreamReader sr = new StreamReader(webBrowser1.DocumentStream, Encoding.GetEncoding("gb2312"));
_history = sr.ReadToEnd();
string _arystr = GetLastNum();
if (_arystr.Length > 0)
{
string[] ary_datalist = _arystr.Split('|');
if (ary_datalist.Length > 0)
{
string[] ary_item = ary_datalist[0].Split(',');
if (_lastCycle.Trim() == ary_item[0].Trim())
{
time_Refresh.Enabled = true;
return;
}
else
{
if (_lastNum != string.Empty)
{
string getNumList = dgv_Reg.Rows[int.Parse(_lastNum) - 1].Cells["TZNum"].Value.ToString();
if (getNumList.Contains(ary_item[2].Trim()))
{
lb_total.Text = TB_Base.Text;
_backtime = 0;
}
else
{
lb_total.Text = (int.Parse(lb_total.Text.Trim()) * double.Parse(txt_double.Text.Trim())).ToString();
_backtime = _backtime + 1;
if (_backtime > int.Parse(txt_Back.Text.Trim()))
{
_backtime = 0;
lb_total.Text = TB_Base.Text;
}
}
}
_lastCycle = ary_item[0].Trim();
_lastTime = ary_item[1].Trim();
_lastNum = ary_item[2].Trim();
_chang = false;
if (int.Parse(_lastCycle) > _starCycle && int.Parse(_lastCycle) < _endCycle)
{
time_Refresh.Enabled = false;
_CycleUrl = "http://www.kt02.com/play/7Gourd/insert.asp?bnumber=" + (int.Parse(_lastCycle) + 1);
webBrowser2.Navigate(_CycleUrl);
}
} }
}
//time_Refresh.Enabled = true;
}
} private void webBrowser2_ControlAdded(object sender, ControlEventArgs e)
{
} private void webBrowser2_ProgressChanged(object sender, WebBrowserProgressChangedEventArgs e)
{
if (e.CurrentProgress == e.MaximumProgress)
{
HtmlElement table = webBrowser2.Document.All["insTable"];
if (table != null && !_chang)
{
_chang = true;
string getNumList = dgv_Reg.Rows[int.Parse(_lastNum) - 1].Cells["TZNum"].Value.ToString();
int deposit = int.Parse(lb_total.Text.Trim()) / getNumList.Split(',').Length;
HtmlElementCollection tr = table.GetElementsByTagName("tr");
for (int i = 1; i < tr.Count; i++)
{
if (getNumList.Contains(i.ToString()))
{ foreach (HtmlElement tag in tr[i].GetElementsByTagName("input"))
{
if (tag.GetAttribute("name") == "ck_")
{
tag.InvokeMember("click");
}
if (tag.GetAttribute("name") == "SMONEY")
{
tag.SetAttribute("value", deposit.ToString());
}
if (tag.GetAttribute("name") == "Submit")
{
tag.InvokeMember("click");
}
if (tag.GetAttribute("name") == "Submit2")
{
tag.InvokeMember("click");
}
} dgv_Log.Rows.Insert(0, new object[] { DateTime.Now.ToString(), (int.Parse(_lastCycle) + 1), i.ToString() + "投" + deposit.ToString() });
}
}
foreach (HtmlElement tag in webBrowser2.Document.GetElementsByTagName("input"))
{
if (tag.GetAttribute("value") == "确认投注")
{
tag.InvokeMember("click");
break;
}
}
PageRefresh();
time_Refresh.Enabled = true;
}
}
} private void webBrowser2_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{ PageRefresh();
time_Refresh.Enabled = true;
} }
}
我知道要分析其实的参数 但是如果已知是一个aspx控件的按钮 只要知道按钮的ID是不是就可以了
{
if (tag.GetAttribute("value") == "确认投注")
{
tag.InvokeMember("click");
break;
}
}这个是关键,这里是根据按钮名称来执行,如果找到"确认投注",就执行他的click事件
__EVENTVALIDATION
__VIEWSTATE
这个只是内容长一点其它的跟普通网站就一般的了。