vb6如何实现上传http站点呢?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vb6如何实现上传http站点呢?相关的知识,希望对你有一定的参考价值。

1.使用socket方式,通过tcp连接web服务器的80端口,发送http协议命令.来实现传输.但太底层.都需要自己来实现.不好,
2.使用xmlhttp控件.vb使用他,快速简单,可以选择get/post方式
下面是使用的封装函数.
Function xmlread(url) As String ''用xml读网页文件
Set http = CreateObject("Microsoft.XMLHTTP")
http.open "post", url, False
http.setRequestHeader "Content-Type", "text/XML"
http.setRequestHeader "Content-Type", "gb2312"
http.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
http.send
If http.readyState = 4 Then
xmlread = Trim(bytes2BSTR(http.responseBody))
Else: xmlread = "error"
End If
Set http = Nothing
End Function
Function xmlpost(url, Form) As String '''用xml传网页表单数据
Set http1 = CreateObject("Microsoft.XMLHTTP")
http1.open "post", url, False
http1.setRequestHeader "Content-Type", "text/XML"
http1.setRequestHeader "Content-Type", "gb2312"
http1.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
http1.send Form
If http1.readyState <> 4 Then
xmlpost = "error"
End If
Set http1 = Nothing
End Function
参考技术A 这里对Winsock控件的属性、方法和事件的介绍限于篇幅就不介绍了,下面以最简单的C/S模式下一台服务器和一台客户机的连接来说明其整个连接过程。

  用框图表示如图1所示。首先运行服务器端的程序,使TcpServer处于监听状态,然后运行客户机端的程序,单击【连接服务器】按钮后,客户机端调用Connect方法呼叫服务器(根据RemoteHostIP远程计算机IP地址和RemotePort远程计算机端口号两个参数),然后客户机便处于正在连接服务器状态,等待服务器的响应。客户机调用Connect方法触发了服务器ConnectRequest事件,这时服务器端可以在此事件中判断是否要接受客户机的请求,如要就调用Accept方法,并置标志位说明已成功连接客户机。服务器端调用Accept方法后又触发了客户机端Connect事件,说明服务器端接受客户端的请求,双方已经建立连接了,这时再置客户机端的标志位,这就是一个完整的连接过程。当服务器或客户机调用Close方法关闭连接时,都会触发对方的Close事件,使其关闭连接。另外建立连接后发送数据的情况是客户机通过调用SendData方法发送数据给服务器,会触发服务器端的DataArrival事件,在这个事件中,服务器端可以调用GetData或PeekData方法把客户机发来的数据保存起来。服务器给客户机发信息同理。要注意一点的是,在服务器的Close事件中应该加上继续监听的代码,这样客户机才可以继续呼叫服务器。
参考技术B 利用Visual Basic 6的Winsock控件实现局域网中多个站点在客户机/服务器模式下的互连,并给出了几种连接方案进行比较,对于Winsock编程过程中遇到的一些问题做了解答。

通过程序实现文件下载,文件上传。

大家好,今天聊一聊有关文件的下载个上传。

需求:通过busybox搭建一个文件站点,在站点上放一些文件,通过程序,将站点上的文件下载,然后上传到 https://pastebin.com上,必须是以用户身份上传。

分析:第一步:如何从文件站点拿到文件,第二步:怎样将文件以用户身份上传

关于如何利用busybox搭建文件站点请参考:https://blog.csdn.net/haofan_/article/details/78369352

下面请看代码:

from http import cookiejar
from urllib.parse import urlencode
from urllib.request import Request, urlopen,HTTPCookieProcessor,build_opener
from bs4 import BeautifulSoup

#文件下载函数
def file():
    url = "XXX" #文件的站点路由
    #请求头信息
    header_info = 
       "User-Agent":"XXXX", #用户代理
        "Authorization":"XXX" #验证信息,该字段可以可以根据站点是否需要验证,设置该字段,可以利用抓包工具拿到
        
    
    r = Request(url=url,headers=header_info) #实例化Request对象
    try:
        res = urlopen(r) #发送请求
        return res.read().decode() #拿到文件内容
    except Exception as e:
        print(e) #打印异常信息


#定义上传文件函数
def send_file(code):
    
    #模拟用户登录
    login_url = "https://pastebin.com/login"   #登录路由
    #登录表单数据
    form_data = 
        "submit_hidden":"submit_hidden",
        "user_name":"XXX",
        "user_password":"XXX",
        "submit":"Login"
    
    #构建请求头信息
    login_header = 
        "User-Agent":"XXX"   
    
        
    
    #cookie管理工具
    cj = cookiejar.CookieJar()
    handler = HTTPCookieProcessor(cj)
    opener = build_opener(handler)

    #利用opener发送请求 将携带cookie
    params = urlencode(form_data) #表单数据编码
    login_r = Request(login_url,data = params.encode(),headers=login_header) #实例化请求对象
    login_res = opener.open(login_r) #发送请求
    
    if login_res.url == "XXX": #通过url 判断用户登录是否成功
        #上传文件
        #获取上传文件页面的token
        token_url = "XXX",
        token_res = opener.open(token_url) #发送请求
        token_html = BeautifulSoup(token_res,lxml)
        token = str(token_html.select([name=csrf_token_post])[0]).split("value")[1][2:-3] #得到token

        #构建文件上传表单数据
        file_form_data = 
         "csrf_token_post": token,
         "submit_hidden": "submit_hidden",
         "paste_code": code,
         "paste_format": "1",
         "paste_expire_date": "N",
         "paste_private": "0",
         "paste_name": "my_code",   
        
        #构建请求头信息
        send_file_header = 
            "User-Agent":"XXX"
        
        send_file_url = "https://pastebin.com/post.php"
        send_params = urlencode(file_form_data)
        send_r = Request(send_file_url,data = send_params.encode(),headers=send_file_header)
        send_res = opener.open(send_r)
        
        if send_res.status == 200:
            print("上传成功!")
        else:
            print("上传失败!")
    else:
        print("登录失败!")


if __name__ =="__main__":
    
    
    text = get_file() #调用文件下载函数
    send_file(text) #调用上传文件函数

 

 

 

以上是关于vb6如何实现上传http站点呢?的主要内容,如果未能解决你的问题,请参考以下文章

快速判断站点是否存活的 3 种编程实现

VB6.0中如何实现逐行读入文本文件?

Android,http:如何将文件上传到由共享服务器托管的站点?

apache 如何设置能实现:正常浏览目录结构(包括虚拟目录)和下载文件,但又禁止PHP,ASP==的运行?

老板说“把系统升级到https”,我用一个脚本实现了,而且永久免费!

如何实现java上传图片并用python训练好的模型来测试呢