查看完整版本: 用HttpWebRequest类实现自动发帖

douces 2007-3-5 16:18

用HttpWebRequest类实现自动发帖

  用HttpWebRequest类实现自动发帖就简单多了。
  我们始终不能忘记,最好的教程是MSDN,在Microsoft Visual Studio .NET 2003“搜索”中敲入HttpWebRequest,抄来一些东东(事实上许多教程书籍都是从MSDN上抄的):
   命名空间: System.Net
   HttpWebRequest 类对 WebRequest 中定义的属性和方法提供支持,也对使用户能够直接与使用 HTTP 的服务器交互的附加属性和方法提供支持。
   不要使用 HttpWebRequest 构造函数。使用 WebRequest.Create 方法初始化 HttpWebRequest 的一个新实例。如果 URI 的方案是 http:// 或 https:// ,则 Create 将返回 HttpWebRequest 实例。
   GetResponse 方法向 RequestUri 属性中指定的 Internet 资源发出同步请求并返回包含该响应的 HttpWebResponse 实例。可以使用 BeginGetResponse 和 EndGetResponse 方法对 Internet 资源发出异步请求。
   当要向 Internet 资源发送数据时, GetRequestStream 方法返回用于发送数据的 Stream 实例。  BeginGetRequestStream 和 EndGetRequestStream 方法提供对发送数据流的异步访问。  
   如果在访问 Internet 资源时发生错误,则 HttpWebRequest 类将引发 WebException 。 WebException.Status 属性是 WebExceptionStatus 值之一,它指示错误源。当 WebException.Status 为 WebExceptionStatus.ProtocolError 时, Response 属性包含从 Internet 资源接收的 HttpWebResponse 。
  

Shared Sub postData()
  Dim httpUrl As New System.Uri("http://sunhai.tianyablog.com?" & "name=yourName&pass=yourPass&cardnumber=yourCardNumber")
  Dim req As HttpWebRequest
  'req.Timeout = 10000 '设置超时值10秒
  req = CType(WebRequest.Create(httpUrl2), HttpWebRequest)
  req.Method = "POST"
  req.ContentType = "application/x-www-form-urlencoded"
  Dim bytesData() As Byte =   System.Text.Encoding.ASCII.GetBytes(""name=yourName&pass=yourPass&cardnumber=yourCardNumber")
  req.ContentLength = bytesData.Length
  Dim postStream As Stream = req.GetRequestStream()
  postStream.Write(bytesData, 0, bytesData.Length)   '以上向服务器post信息。
  Dim res As HttpWebResponse = CType(req.GetResponse(), HttpWebResponse) '以下获取服务器返回信息
  Dim reader As StreamReader = _
  New StreamReader(res.GetResponseStream, System.Text.Encoding.GetEncoding("GB2312"))
  Dim respHTML As String = reader.ReadToEnd()
    MsgBox(respHTML)  '这就是向网络服务器post后返回的信息
    MsgBox(res.StatusCode.ToString)  '向网络服务器post后返回的状态码
  res.Close() '关闭

End Sub

babala 2007-3-5 19:31

好帖
很好帖
确实好帖
少见的好帖
真 TMD 好帖
难得一见的好帖
千年等一回的好帖
好得不能再好的好帖
惊天地且泣鬼神的好帖
让人阅毕击掌三叹的好帖
让人佩服得五体投地的好帖
让人奔走相告曰须阅读的好帖
让斑竹看后决定加精固顶的好帖
让人看后在各论坛纷纷转贴的好帖
让人看后连成人网站都没兴趣的好帖
让人看完后就要往上顶往死里顶的好帖
让人看后不断在各种场合重复引用的好帖
让人一见面就问你看过某某好帖没有的好帖
让人半夜上厕所都要打开电脑再看一遍的好帖
让个读过后都下载在硬盘里详细研究欣赏的好帖
让人走路吃饭睡觉干什么事连做梦都梦到它的好帖
让人翻译成36种不同外语流传国内外世界各地的好帖
让人纷纷唱道过年过节不送礼要送就送某某帖子的好帖
让国家领导人命令将该帖刻在纯金版上当国礼送人的好帖
让网络上纷纷冒出该帖的真人版卡通版搞笑版成人版的好帖
让人在公共厕所里不再乱涂乱化而是纷纷对它引经据典的好帖
让某位想成名的少女向媒体说她与该帖作者发生过性关系的好帖
让人根据它写成小说又被不同导演拍成48个不同版本的电影的好帖
让某名导演跟据此帖改拍的电影在奥斯卡上一连拿了11个奖项的好帖
让人大代表们看完后联名要求根据该帖的内容对宪法做适当修改的好帖
让人为了谁是它的原始作者纷纷地闹上法院打官司要争得它的版权的好帖
让各大学府纷纷邀请该帖作者去就如何发表优秀网络文学为题目演讲的好帖
让人为了该帖而成立了各种学会来研究并为不同的理解争得眼红脖子粗的好帖
让美国警察于今后逮捕人说你有权保持沉默还有权阅读某某帖子要不要啊的好帖
让本拉登躲在山洞里还命令他手下冒着被美军发现的危险去上网下载来阅读的好帖
让萨达姆被捕时被发现他随身携带的除了一把手枪之外还有的就是它的复印件的好帖
让比尔盖茨在懂事会上发给与会者人手一份该帖命令仔细阅读后才讨论其他事宜的好帖
让诺贝儿奖理事会破天荒地因该帖的出现而开会讨论一直决定今后设立最佳帖子奖的好帖
让联合国安理会决定将它译成宇宙语由中国神州六号升空后不断播放看有没有外星人的好帖
让人看完后IE锁死连瑞星诺顿都没法修复只好格式化硬盘重装启动后主页显示的还是它的好帖

Test 2007-3-8 14:45

              用HttpWebRequest类实现自动发帖

  用HttpWebRequest类实现自动发帖就简单多了。
  我们始终不能忘记,最好的教程是MSDN,在Microsoft Visual Studio .NET 2003“搜索”中敲入HttpWebRequest,抄来一些东东(事实上许多教程书籍都是从MSDN上抄的):
   命名空间: System.Net
   HttpWebRequest 类对 WebRequest 中定义的属性和方法提供支持,也对使用户能够直接与使用 HTTP 的服务器交互的附加属性和方法提供支持。
   不要使用 HttpWebRequest 构造函数。使用 WebRequest.Create 方法初始化 HttpWebRequest 的一个新实例。如果 URI 的方案是 http:// 或 https:// ,则 Create 将返回 HttpWebRequest 实例。
   GetResponse 方法向 RequestUri 属性中指定的 Internet 资源发出同步请求并返回包含该响应的 HttpWebResponse 实例。可以使用 BeginGetResponse 和 EndGetResponse 方法对 Internet 资源发出异步请求。
   当要向 Internet 资源发送数据时, GetRequestStream 方法返回用于发送数据的 Stream 实例。  BeginGetRequestStream 和 EndGetRequestStream 方法提供对发送数据流的异步访问。  
   如果在访问 Internet 资源时发生错误,则 HttpWebRequest 类将引发 WebException 。 WebException.Status 属性是 WebExceptionStatus 值之一,它指示错误源。当 WebException.Status 为 WebExceptionStatus.ProtocolError 时, Response 属性包含从 Internet 资源接收的 HttpWebResponse 。
  

Shared Sub postData()
  Dim httpUrl As New System.Uri("http://sunhai.tianyablog.com?" & "name=yourName&pass=yourPass&cardnumber=yourCardNumber")
  Dim req As HttpWebRequest
  'req.Timeout = 10000 '设置超时值10秒
  req = CType(WebRequest.Create(httpUrl2), HttpWebRequest)
  req.Method = "POST"
  req.ContentType = "application/x-www-form-urlencoded"
  Dim bytesData() As Byte =   System.Text.Encoding.ASCII.GetBytes(""name=yourName&pass=yourPass&cardnumber=yourCardNumber")
  req.ContentLength = bytesData.Length
  Dim postStream As Stream = req.GetRequestStream()
  postStream.Write(bytesData, 0, bytesData.Length)   '以上向服务器post信息。
  Dim res As HttpWebResponse = CType(req.GetResponse(), HttpWebResponse) '以下获取服务器返回信息
  Dim reader As StreamReader = _
  New StreamReader(res.GetResponseStream, System.Text.Encoding.GetEncoding("GB2312"))
  Dim respHTML As String = reader.ReadToEnd()
    MsgBox(respHTML)  '这就是向网络服务器post后返回的信息
    MsgBox(res.StatusCode.ToString)  '向网络服务器post后返回的状态码
  res.Close() '关闭

End Sub


  用AxWebBrowser控件实现自动发帖留有三个问题,用HttpWebRequest类来实现,后二个问题都不复存在。而且,用HttpWebRequest类来实现的速度要快得多。但是,同样的?
  有的网站要填上识别码数字才能注册或发言,如何用程序来实现自动识别识别码图片上的数字?

  我们在主过程里加上线程,因为我们以后要用多线程发帖啊。多线程在VB6中不好实现,在VB.NET中却是轻而易举的事情。
 

Dim threadAdd As System.Threading.Thread '定义线程 
Public Sub threadAutoAdd()
  threadAdd= New System.Threading.Thread(AddressOf postData)  '创建线程实例
  threadNetsh.Start()  '开始线程
  '别忘了在Sub postData()的最后加上threadAutoAdd.Abort()来关闭线程
  '或者在这里加上判断Sub postData()完毕的代码,如果完毕就关闭线程
End Sub
页: [1]

查看完整版本: 用HttpWebRequest类实现自动发帖