我想做个winform程序,功能是我在这个winform程序里面编辑博文。分类什么的都不管啦,然后选择目前比较主流的博客,像新浪,搜狐等(当然在winform窗体里面选择啦),再将用户名和密码输入进去(比如说我的每个博客的用户名和密码都一样),点确定,就可以吧我编辑的博文更新到我的那些博客里面啦,大概意思就是这样。
这个问题我用了三个不同的标题问了,但是还是没有满意的回答,希望有哪位大侠可以帮我下下。。

解决方案 »

  1.   

    搭什么架子啊,我现在都不知道怎没做。就一个按钮,你难道让我搞个弹出框显示HELLO WORLD?
      

  2.   

    不明白你这个有啥难的,不就是把你的数据写到库里吗?用web的还是用windows的这个应该没关系啊。你只要能把数据写到库里就能实现。
      

  3.   

    1.要他们给接口  不是很可能
    2.好好研究一下HTTP协议 post
      

  4.   

    不知道 新浪博客什么的有没有 api,接口? 应该有把
    不过下班了
      

  5.   

    研究一下 http://www.jiathis.com/   下班了
      

  6.   

     public class WebPage
        {
            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;
                }
            }
      

  7.   

    接上
            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; }
            }
        }这是我以前写爬虫系统用的一个读页面的类,你能研究好了你的问题就不是问题了
    下班了
      

  8.   

    sprc_lcl他说是winform了。呵呵。你贴的webform
      

  9.   

    用WebClient等,采用流将网页取回来,修改后,再将请求发回去!
      

  10.   

    不是没人会。是用不着。所以你如果需要。我已经给过你很准确的方向了。你应该去打开我给你的页面。学习一下,然后开始设计,我们才可以帮你讨论设计的问题。如果你一句话,和那些要代码的,要作业的有什么不同?只是技术论坛,不是外包社区(还免费的)。c# RSS 博客 源码 下载
      

  11.   

    webbrower登录编辑
    否则就要接口
      

  12.   

    1、需要一个工厂方法来为不同的站点创建登录对象。
    2、登录对象封装了登录的url以及暴露了登录的方法。
    3、登录通过httpWebRequest的方法来登录,获得Cookie之后将Cookie持久化到一个CookieContainer里面,如果通过url,则需要持久化url。
    4、根据登录对象获得当前blog发布的页面地址。
    5、将你要发送的blog按照这个地址POST到服务器上,必要的页面参数必须填写。
    6、等待响应结果。
    楼主能不能看懂不能保证,但是大体思路是这样的,这样肯定可行。
      

  13.   


    多谢各位的帮忙,我想我应该当时太急了,我从来没有过这种经历,就是一个问题考虑或是和别人交流了一天还没头绪,现在我还是没头绪,wuyazhe说的对,但是可能我技术太菜,看不懂你发的页面里面的内容。我现在只是找不到方法。就像有一条路,我不知道怎么走。
      

  14.   

    如果你只想要这样一个工具.直接下载就可以了.RSS订阅工具很多的.
    如果你想学习编程,c#,windows开发.那我认为这个例子对你现在并不合适.典型的眼高手低.如果别人写出来给你,那和你直接下载一个有什么区别呢?所以看你自己想法了.处于学习目的,就换个题目.从基础入手把.
      

  15.   

    你如果不用软件如何写博客?
    1.登录博客
    2.打开写博客页面
    3.在标题,文章正文部分填上内容
    4.点提交你要做的不过就是吧这4步都让软件实现,使用者操作你的软件,替代直接操作网页。我想这样说已经很细致了,你着手解决这4个问题就可以了。
    问题1:详见csdn助手,有很多人写过。也有不少开源了。
    问题2:如果用webbrower,Navigation到那个页面就可以了
    问题3:你要之写文本就用文本框,要排版就添加word组件或richtextbox
    问题4:搜索一下,如果webbrower,问题1中有例子。