我想做个winform程序,功能是我在这个winform程序里面编辑博文。分类什么的都不管啦,然后选择目前比较主流的博客,像新浪,搜狐等(当然在winform窗体里面选择啦),再将用户名和密码输入进去(比如说我的每个博客的用户名和密码都一样),点确定,就可以吧我编辑的博文更新到我的那些博客里面啦,大概意思就是这样。
这个问题我用了三个不同的标题问了,但是还是没有满意的回答,希望有哪位大侠可以帮我下下。。
这个问题我用了三个不同的标题问了,但是还是没有满意的回答,希望有哪位大侠可以帮我下下。。
解决方案 »
- 求一条正则表达式,匹配日期时间的
- c#正则表达式的问题
- 做了个登录框,登录的时候点两下就会出现好多以前登录过的用户名,怎么才能去掉这些历史记录呢
- 请问,如何引用groupBox控件中radioButton子控件的Checked状态?
- DLL文件强名
- 高手进来帮个忙:带有 CLSID {0002E500-0000-0000-C000-000000000046} 的 COM 对象无效或未注册
- 邮件处理中,返回“输入字符串的格式不正确”错误提示??
- 如何将String[]转换成int[]
- (急)可能真是mircosoft的bug!
- 网上哪里有卖VS.NET正式榜,请告知!谢谢!
- 同时开时几个异步的方法,如何确定在这几个异步方法都完成之后再执行下面的程序
- 对GRIDVIEW控件绑定数据的一个疑问,详细请进
2.好好研究一下HTTP协议 post
不过下班了
{
private string _url;
private string _method;
private string _encode;
private string _contentType;
private string _postData;
private CookieContainer _cookieContainer;
private string _referer; private bool _keepAlive;
private bool _allowAutoRedirect;
private string _userAgent;
private string _accept; private int _errorCode = 0;
private static DataTable _dtError = null;
private string _result = ""; public WebPage()
{
IniErrorArray(); _method = "get";
_encode = "gb2312";
_postData = "";
_contentType = "application/x-www-form-urlencoded";
_referer = "";
_keepAlive = true;
_allowAutoRedirect = true;
_userAgent = "Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.2;+SV1;+.NET+CLR+1.1.4322;+.NET+CLR+2.0.50727;+Alexa+Toolbar)";
_accept = "text/plain, */*";
} public string GetResource()
{
_errorCode = 0;
HttpWebRequest objRequest = (HttpWebRequest)WebRequest.Create(_url);
objRequest.KeepAlive = _keepAlive;
objRequest.AllowAutoRedirect = _allowAutoRedirect;
objRequest.UserAgent = _userAgent;
objRequest.CookieContainer = _cookieContainer;
objRequest.Method = _method;
objRequest.ContentType = _contentType;
objRequest.Referer = _referer;
objRequest.ProtocolVersion = System.Net.HttpVersion.Version11;
objRequest.Accept = _accept;
objRequest.Referer = _referer; if (objRequest.Method.ToLower() == "post")
{
byte[] bytes;
if (objRequest.ContentType.ToLower() == "multipart/form-data")
{
string boundary = "---------------------------7d" + DateTime.Now.Ticks.ToString("x");
string[] array = _postData.Split('&');
StringBuilder sb = new StringBuilder();
string npostdata = "";
for (int i = 0; i < array.Length; i++)
{
sb.Append(string.Format("--{0}\r\n", boundary));
string[] temp = array[i].Split('=');
sb.Append(string.Format("Content-Disposition: form-data; name=\"{0}\"\r\n", temp[0]));
sb.Append("\r\n");
sb.Append(string.Format("{0}\r\n", temp[1])); if (npostdata.Length > 0)
{
npostdata += "&";
}
//npostdata += string.Format("{0}={1}", temp[0], System.Web.HttpUtility.UrlEncode(temp[1], Encoding.GetEncoding(_encode)));
}
sb.Append(string.Format("--{0}\r\n\r\n", boundary));
bytes = Encoding.GetEncoding(_encode).GetBytes(sb.ToString());
sb = null; }
else
{
objRequest.ContentType = "application/x-www-form-urlencoded";
bytes = Encoding.GetEncoding(_encode).GetBytes(_postData);
} objRequest.ContentLength = bytes.Length;
try
{
Stream outStream = objRequest.GetRequestStream();
outStream.Write(bytes, 0, bytes.Length);
outStream.Close();
//outStream.Dispose();
}
catch (Exception ex)
{
objRequest.Abort();
objRequest = null;
_result = ex.ToString();
_errorCode = GetErrorCode(_result);
return _result;
}
} try
{
HttpWebResponse objResponse = (HttpWebResponse)objRequest.GetResponse();
Stream objStream = objResponse.GetResponseStream();
StreamReader sr = new StreamReader(objStream, System.Text.Encoding.GetEncoding(_encode));
string result = sr.ReadToEnd();
sr.Close();
sr.Dispose();
objStream.Close();
objStream.Dispose();
objResponse.Close();
objResponse = null;
_result = result;
return _result;
}
catch (Exception ex)
{
objRequest.Abort();
objRequest = null;
_result = ex.ToString();
_errorCode = GetErrorCode(_result);
return _result;
}
}
public int GetErrorCode(string error)
{
IniErrorArray();
int errorCode = -1;
DataView dv = _dtError.DefaultView;
dv.RowFilter = string.Format("Error='{0}' or '{0}' like '%'+ErrorMatch+'%'", error);
if (dv.Count > 0)
errorCode = Convert.ToInt32(dv[0]["ErrorCode"]);
return errorCode;
} public string GetError(int errorCode)
{
IniErrorArray();
string error = "未知错误";
DataView dv = _dtError.DefaultView;
dv.RowFilter = string.Format("ErrorCode='{0}'", errorCode);
if (dv.Count > 0)
error = dv[0]["Error"].ToString();
return error;
} private void IniErrorArray()
{
if (_dtError == null)
{
_dtError = new DataTable();
_dtError.Columns.Add("ErrorCode");
_dtError.Columns.Add("Error");
_dtError.Columns.Add("ErrorMatch"); DataRow dr = _dtError.NewRow();
dr["ErrorCode"] = 404;
dr["Error"] = "无法找到该页";
dr["ErrorMatch"] = "System.Net.WebException: 远程服务器返回错误: (404) 未找到。";
_dtError.Rows.Add(dr);
dr = _dtError.NewRow();
dr["ErrorCode"] = 404;
dr["Error"] = "无法找到该页";
dr["ErrorMatch"] = "System.Net.WebException: The remote server returned an error: (404) Not Found.";
_dtError.Rows.Add(dr); dr = _dtError.NewRow();
dr["ErrorCode"] = 500;
dr["Error"] = "内部服务器错误";
dr["ErrorMatch"] = "System.Net.WebException: 远程服务器返回错误: (500) 内部服务器错误。";
_dtError.Rows.Add(dr);
dr = _dtError.NewRow();
dr["ErrorCode"] = 500;
dr["Error"] = "内部服务器错误";
dr["ErrorMatch"] = "System.Net.WebException: The remote server returned an error: (500) Internal Server Error.";
_dtError.Rows.Add(dr);
dr = _dtError.NewRow();
dr["ErrorCode"] = 700;
dr["Error"] = "超时";
dr["ErrorMatch"] = "System.Net.WebException: 基础连接已经关闭: 接收时发生错误。";
_dtError.Rows.Add(dr); dr = _dtError.NewRow();
dr["ErrorCode"] = 700;
dr["Error"] = "请求连接超时";
dr["ErrorMatch"] = "System.Net.WebException: The request was aborted: The operation has timed out.";
_dtError.Rows.Add(dr); dr = _dtError.NewRow();
dr["ErrorCode"] = 700;
dr["Error"] = "超时";
dr["ErrorMatch"] = "System.Net.WebException: The operation has timed out";
_dtError.Rows.Add(dr); dr = _dtError.NewRow();
dr["ErrorCode"] = 700;
dr["Error"] = "无法连接到远程服务器";
dr["ErrorMatch"] = "System.Net.WebException: 无法连接到远程服务器";
_dtError.Rows.Add(dr);
dr = _dtError.NewRow();
dr["ErrorCode"] = 700;
dr["Error"] = "无法连接到远程服务器";
dr["ErrorMatch"] = "Unable to connect to the remote server";
_dtError.Rows.Add(dr); dr = _dtError.NewRow();
dr["ErrorCode"] = 700;
dr["Error"] = "远程服务器不可用";
dr["ErrorMatch"] = "(503) Server Unavailable";
_dtError.Rows.Add(dr); dr = _dtError.NewRow();
dr["ErrorCode"] = 701;
dr["Error"] = "远程主机强迫关闭了一个现有的连接";
dr["ErrorMatch"] = "System.IO.IOException: Unable to read data from the transport connection";
_dtError.Rows.Add(dr);
}
} public int ErrorCode
{
get { return _errorCode; }
} public string Result
{
get { return _result; }
} public string Url
{
get { return _url; }
set { _url = value; }
} public string Method
{
get { return _method; }
set
{
if (value.Trim().Length == 0)
_method = "get";
else
_method = value;
}
} public string Encode
{
get { return _encode; }
set { _encode = value; }
} public string ContentType
{
get { return _contentType; }
set { _contentType = value; }
} public string PostData
{
get { return _postData; }
set { _postData = value; }
} public CookieContainer CookieContainer
{
get { return _cookieContainer; }
set { _cookieContainer = value; }
}
public string Referer
{
get { return _referer; }
set { _referer = value; }
}
}这是我以前写爬虫系统用的一个读页面的类,你能研究好了你的问题就不是问题了
下班了
否则就要接口
2、登录对象封装了登录的url以及暴露了登录的方法。
3、登录通过httpWebRequest的方法来登录,获得Cookie之后将Cookie持久化到一个CookieContainer里面,如果通过url,则需要持久化url。
4、根据登录对象获得当前blog发布的页面地址。
5、将你要发送的blog按照这个地址POST到服务器上,必要的页面参数必须填写。
6、等待响应结果。
楼主能不能看懂不能保证,但是大体思路是这样的,这样肯定可行。
多谢各位的帮忙,我想我应该当时太急了,我从来没有过这种经历,就是一个问题考虑或是和别人交流了一天还没头绪,现在我还是没头绪,wuyazhe说的对,但是可能我技术太菜,看不懂你发的页面里面的内容。我现在只是找不到方法。就像有一条路,我不知道怎么走。
如果你想学习编程,c#,windows开发.那我认为这个例子对你现在并不合适.典型的眼高手低.如果别人写出来给你,那和你直接下载一个有什么区别呢?所以看你自己想法了.处于学习目的,就换个题目.从基础入手把.
1.登录博客
2.打开写博客页面
3.在标题,文章正文部分填上内容
4.点提交你要做的不过就是吧这4步都让软件实现,使用者操作你的软件,替代直接操作网页。我想这样说已经很细致了,你着手解决这4个问题就可以了。
问题1:详见csdn助手,有很多人写过。也有不少开源了。
问题2:如果用webbrower,Navigation到那个页面就可以了
问题3:你要之写文本就用文本框,要排版就添加word组件或richtextbox
问题4:搜索一下,如果webbrower,问题1中有例子。