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站点呢?的主要内容,如果未能解决你的问题,请参考以下文章
Android,http:如何将文件上传到由共享服务器托管的站点?
apache 如何设置能实现:正常浏览目录结构(包括虚拟目录)和下载文件,但又禁止PHP,ASP==的运行?