http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 3469|回复: 4

[综合] 加了个文件上传

[复制链接]
发表于 2013-1-16 17:57:43 | 显示全部楼层 |阅读模式
[code=vb]        Private Sub SetUpData(objhttpItem As HttpItem)

            'httpWebRequest__1.ContentType = "multipart/form-data; boundary=" & boundary
            'UpDate_boundary
            'UpDate_Type
            'UpDate_FileName

            Dim boundary As String = objhttpItem.UpDate_boundary
            Dim boundarybytes As Byte() = System.Text.Encoding.ASCII.GetBytes(vbCr & vbLf & "--" & boundary & vbCr & vbLf)



            request.GetRequestStream().Write(boundarybytes, 0, boundarybytes.Length)
            Dim headerTemplate As String = "Content-Disposition: form-data; name=""{0}""; filename=""{1}""" & vbCr & vbLf & "Content-Type: {2}" & vbCr & vbLf & vbCr & vbLf
            Dim header As String = String.Format(headerTemplate, objhttpItem.UpDate_name, objhttpItem.UpDate_FileName, objhttpItem.UpDate_Type)
            Dim headerbytes As Byte() = System.Text.Encoding.UTF8.GetBytes(header)
            request.GetRequestStream().Write(headerbytes, 0, headerbytes.Length)

            'HttpContext.Current.Response.Write(IO.Path.GetFileName(GetUrl))
            'HttpContext.Current.Response.Write(GetContentType(IO.Path.GetFileName(GetUrl)))



            Dim buffer As Byte() = New Byte(4095) {}
            Dim byteSeq As Integer = objhttpItem.UpDate_Stream.Read(buffer, 0, 4096)

            Do While byteSeq > 0
                request.GetRequestStream().Write(buffer, 0, byteSeq)
                byteSeq = objhttpItem.UpDate_Stream.Read(buffer, 0, 4096)
            Loop


            Dim trailer As Byte() = System.Text.Encoding.ASCII.GetBytes(vbCr & vbLf & "--" & boundary & "--" & vbCr & vbLf)
            request.GetRequestStream().Write(trailer, 0, trailer.Length)


            request.GetRequestStream().Close()


        End Sub[/code]


1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
 楼主| 发表于 2013-1-16 18:04:49 | 显示全部楼层
[code=vb]   'UpDate_boundary
        'UpDate_Type
        'UpDate_FileName
        'UpDate_name
        'UpDate_Stream
        Private _UpDate_Stream As Stream = Nothing
        ''' <summary>
        ''' 请求UpDate_boundary
        ''' </summary>
        Public Property UpDate_Stream() As Stream
            Get
                Return _UpDate_Stream
            End Get
            Set(value As Stream)
                _UpDate_Stream = value
            End Set
        End Property

        Private _UpDate_boundary As String = String.Empty
        ''' <summary>
        ''' 请求UpDate_boundary
        ''' </summary>
        Public Property UpDate_boundary() As String
            Get
                Return _UpDate_boundary
            End Get
            Set(value As String)
                _UpDate_boundary = value
            End Set
        End Property

        Private _UpDate_name As String = String.Empty
        ''' <summary>
        ''' 请求UpDate_FileName
        ''' </summary>
        Public Property UpDate_name() As String
            Get
                Return _UpDate_name
            End Get
            Set(value As String)
                _UpDate_name = value
            End Set
        End Property

        Private _UpDate_FileName As String = String.Empty
        ''' <summary>
        ''' 请求UpDate_FileName
        ''' </summary>
        Public Property UpDate_FileName() As String
            Get
                Return _UpDate_FileName
            End Get
            Set(value As String)
                _UpDate_FileName = value
            End Set
        End Property

        Private _UpDate_Type As String = String.Empty
        ''' <summary>
        ''' 请求UpDate_Type
        ''' </summary>
        Public Property UpDate_Type() As String
            Get
                Return _UpDate_Type
            End Get
            Set(value As String)
                _UpDate_Type = value
            End Set
        End Property[/code]

 楼主| 发表于 2013-1-16 18:05:52 | 显示全部楼层
[code=vb]        Private Sub SetRequest(objhttpItem As HttpItem)
            ' 验证证书
            SetCer(objhttpItem)
            ' 设置代理
            SetProxy(objhttpItem)
            '请求方式Get或者Post
            request.Method = objhttpItem.Method
            request.Timeout = objhttpItem.Timeout
            request.ReadWriteTimeout = objhttpItem.ReadWriteTimeout
            'Accept
            request.Accept = objhttpItem.Accept
            'ContentType返回类型
            request.ContentType = objhttpItem.ContentType
            'UserAgent客户端的访问类型,包括浏览器版本和操作系统信息
            request.UserAgent = objhttpItem.UserAgent
            ' 编码
            SetEncoding(objhttpItem)
            '设置Cookie
            SetCookie(objhttpItem)
            '来源地址
            request.Referer = objhttpItem.Referer
            '是否执行跳转功能
            request.AllowAutoRedirect = objhttpItem.Allowautoredirect
            '设置Post数据

            If objhttpItem.UpDate_name <> String.Empty Then
                SetUpData(objhttpItem)

            Else
                SetPostData(objhttpItem)


            End If
            'SetUpData(objhttpItem)


            '设置最大连接
            If objhttpItem.Connectionlimit > 0 Then
                request.ServicePoint.ConnectionLimit = objhttpItem.Connectionlimit
            End If
        End Sub[/code]
 楼主| 发表于 2013-1-16 18:06:59 | 显示全部楼层
使用方法


[code=vb]        Dim http As New HttpHelper, item As New HttpItem
        item.URL = Url
        item.ResultType = ResultType.Byte
        item.CookieCollection = cc
        http.GetHtml(item)
        cc.Add(item.CookieCollection)


        Dim image As Stream = New MemoryStream(item.ResultByte)



        Dim boundary As String = "---------------------------" & DateTime.Now.Ticks.ToString("x")

        item = New HttpItem
        item.URL = "提交URL"
        item.Method = "post"
        item.ContentType = "multipart/form-data; boundary=" & boundary
        item.UpDate_boundary = boundary
        item.UpDate_FileName = IO.Path.GetFileName(Url)
        item.UpDate_name = "imageFile"
        item.UpDate_Type = GetContentType(IO.Path.GetFileName(Url))
        item.UpDate_Stream = image



        item.CookieCollection = cc
        Dim html As String = http.GetHtml(item)
        cc.Add(item.CookieCollection)

        Return html[/code]
发表于 2013-1-16 19:29:05 | 显示全部楼层
VB的不懂,不过支持一下
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-5-15 03:38

© 2014-2021

快速回复 返回顶部 返回列表