转:vc中如何通过http的post方式上传文件

2023-05-16

文章引自:http://blog.myspace.cn/e/404248359.htm

vc中如何通过http的post方式上传文件

HTTP响应  
  在接收和解释请求消息后,服务器会返回一个HTTP响应消息。  
   
  与HTTP请求类似,HTTP响应也是三个部分组成,分别是:  
  状态行、消息报头、响应正文。  
   
  状态行:  
  状态行由协议版本、数字形式的状态代码、及相应的状态描述,各元素之间以空格分隔。  
   
  格式:       HTTP-Version   Status-Code   Reason-Phrase   CRLF  
   
  例如:       HTTP/1.1   200   OK   \r\n  
   
  状态代码:  
  状态代码由3位数字组成,表示请求是否被理解或被满足。  
   
  状态描述:  
  状态描述给出了关于状态代码的简短的文字描述。  
   
  状态代码的第一个数字定义了响应的类别,后面两位没有具体的分类。  
  第一个数字有五种可能的取值:  
  -   1xx:     指示信息—表示请求已接收,继续处理。  
  -   2xx:     成功—表示请求已经被成功接收、理解、接受。  
  -   3xx:     重定向—要完成请求必须进行更进一步的操作。  
  -   4xx:     客户端错误—请求有语法错误或请求无法实现。  
  -   5xx: 服务器端错误—服务器未能实现合法的请求。  
   
   
  状态代码 状态描述 说明  
      200       OK 客户端请求成功  
      400               Bad   Request 由于客户端请求有语法错误,不能被服务器所理解。  
      401               Unauthonzed 请求未经授权。这个状态代码必须和WWW-Authenticate报头域一起使用  
      403 Forbidden 服务器收到请求,但是拒绝提供服务。服务器通常会在响应正文中给出不提供服务的原因  
      404 Not   Found 请求的资源不存在,例如,输入了错误的URL。  
      500       Internal   Server   Error 服务器发生不可预期的错误,导致无法完成客户端的请求。  
      503         Service   Unavailable 服务器当前不能够处理客户端的请求,在一段时间之后,服务器可能会恢复正常。

HTTP消息  
  HTTP消息由客户端到服务器的请求和服务器到客户端的响应组成。请求消息和响应消息都是由开始行,消息报头(可选的),空行(只有CTLF的行),消息正文(可选的)组成。  
  对于请求消息,开始行就是请求行。  
  对于响应消息,开始行就是状态行。  
   
   
  消息报头  
  HTTP消息报头包括普通报头、请求报头、响应报头、实体报头。  
  每一个报头域都是由(名字+":"+空格+值)组成,消息报头域的名字是大小写无关的。  
   
   
   
  普通报头:  
  在普通报头中,有少数报头域应用于所有的请求和响应消息,但并不用于被传输的实体,这些报头域只用于传输的消息。  
  常用的普通报头域:Cache-Control,Date,Connection,Pragma.  
   
   
   
  请求报头:  
  请求报头允许客户端向服务器端传递该请求的附加信息以及客户端自身的信息。  
  常用的请求报头域:  
  Accept  
        Accept请求报头域用语指定客户端接受哪些类型的信息。例如:Accept:   image/gif,表明客户端希望接受GIF图象格式的资源;Accept:   text/html,表明客户端希望接受html文本。  
  Accept-Charset  
        Accept-Charset请求报头域用于指定客户端接受的字符集。例如:Accept-Charset:   ios-8859-1,gb2312。如果在请求消息中没有设置这个域,缺省是任何字符集都可以接受。  
  Accept-Encoding  
        Accept-Encoding请求报头域类似Accept,但是它是用于指定可接受的内容编码。例如:Accept-Encoding:   gzip,deflate。如果请求消息中没有设置这个域,服务器假定客户端对各种内容编码都可接受。  
  Accept-Language  
        Accept-Language请求报头域类似于Accept,但是它是用于指定一种自然语言。例如:Accept-Language:   zh-cn。如果请求消息中没有设置这个域,服务器假定客户端对各种语言都可接受。  
  Authorization  
        Authorization请求报头域主要用于证明客户端有权查看某个资源。当浏览器访问一个页面时,如果收到服务器的响应代码为401(未授权),可以发送一个包含Authorization请求报头域的请求,要服务器对其进行验证。  
  Host  
        Host请求报头域主要用于指定被请求资源的Internet主机和端口号,它通常是从HTTP   URL中提取出来的。  
  例如:http://www.sunxin.org/index.html。浏览器发送的请求消息中,就会包含Host请求报头域,如下:Host:   www.sunxin.org  
  后面没有跟端口号,表明使用的是缺省端口号80,如果端口号不是80,那么就要在主机名后面加上一个冒号(":"),然后接上端口号,例如:  
  Host:   www.sunxin.org:8080。     要注意的是,在发送HTTP请求的时候,这个报头域是必须的。  
  User-Agent  
        User-Agent允许客户端将它的操作系统浏览器和其他属性告诉服务器。我们上网登陆论坛的时候,往往看到些欢迎信息,其中列出了你的操作系统的名称和版本等等信息。原因是:服务器从User-Agent请求报头域中获取的这些信息,自己编写浏览器可以不用这个请求报头域。服务器就无法得知了。

由于帖子不能连续发送3次以上,所以我又申请了个号过来继续发,要是给分,就只给在wf520pb上啊,呵呵。。。  
   
  --------------------------------------------------  
  响应报头  
  响应报头允许服务器传递不能放在状态行中的附加响应信息,以及关于服务器的信息和对Request-URI所标识的资源进行下一步访问的信息。  
  常用的响应报头域:  
  Location  
        Location响应报头域用于重定向接受者到一个新的位置。例如:客户端所请求的页面已不存在原先的位置,为了让客户端重定向到这个页面新的位置,服务器端可以发回Location响应报头后使用重定向语句,让客户端去访问新的域名所对应的服务器上的资源。当我们在JSP中使用重定向语句的时候,服务器端向客户端发回的响应报头中,就会有Location响应报头域。下面是Location响应报头域的一个例子:Location:   http://www.sunxin.org  
  Server  
        Server响应报头域包含了服务器用来处理请求的软件信息。它和User-Agent请求报头域是相对应的,前者发送服务器端软件的信息,后者发送客户端软件(浏览器)和操作系统的信息。下面是Server响应报头域的一个例子:Server:   Apache-Coyote/1.1  
  WWW-Authenticate  
        WWW-Authenticate响应报头域必须被包含在401(未授权的)响应消息中,这个报头域和前面讲到的Authorization请求报头域是相关的,当客户端收到401响应消息,就要决定是否请求服务器对其进行验证。如果要求服务器对其进行验证,就可以发送一个包含了Authorization报头域的请求,下面是WWW-Authenticate响应报头域的一个例子:WWW-Authenticate:   Basic   realm="Basic   Auth   Test!"  
  从这个响应报头域,可以知道服务器端对我们所请求的资源采用的是基本验证机制。

实体报头  
  请求和响应消息都可以传送一个实体。一个实体由实体报头域和实体正文组成,大多数情况下,实体正文就是请求消息中的请求正文或者响应消息中的响应正文。但是在发送时,并不是说实体报头域和实体正文要在一起发送,例如:有些响应可以只包含实体报头域。实体就好象我们写的书信,在信中,我们可以写上标题,加上页号等,这部分就相当于是实体报头域,而我们所写的书信的内容,就相当于实体正文。前面说讲的普通报头、请求报头、响应报头我们可以看成是写在信封上的邮编、接收者,发送者等内容。  
  实体报头定义了关于实体正文(例如:有无实体正文)和请求所标识的资源的元信息。  
  所谓元信息,是指描述其他信息的信息。  
   
  常用的实体报头域:  
  Content-Encoding  
          Content-Encoding实体报头域被使用作媒体类型的修饰符,它的值指示了已经被应用到实体正文的附加内容编码,因而要获得Content-Type报头域中所引用的媒体类型,必须采用相应的解码机制。Content-Encoding主要用语记录文档的压缩方法,下面是它的一个例子:Content-Encoding:   gzip。如果一个实体正文采用了编码方式存储,在使用之前就必须进行解码。  
  Content-Language  
          Content-Language实体报头域描述了资源所用的自然语言。Content-Language允许用户遵照自身的首选语言来识别和区分实体。如果这个实体内容仅仅打算提供给丹麦的阅读者,那么可以按照如下的方式设置这个实体报头域:Content-Language:   da。  
  如果没有指定Content-Language报头域,那么实体内容将提供给所以语言的阅读者。  
  Content-Length  
          Content-Length实体报头域用于指明正文的长度,以字节方式存储的十进制数字来表示,也就是一个数字字符占一个字节,用其对应的ASCII码存储传输。  
          要注意的是:这个长度仅仅是表示实体正文的长度,没有包括实体报头的长度。  
  Content-Type  
          Content-Type实体报头域用语指明发送给接收者的实体正文的媒体类型。例如:  
  Content-Type:   text/html;charset=ISO-8859-1  
  Content-Type:   text/html;charset=GB2312  
  Last-Modified  
          Last-Modified实体报头域用于指示资源最后的修改日期及时间。  
  Expires  
          Expires实体报头域给出响应过期的日期和时间。通常,代理服务器或浏览器会缓存一些页面。当用户再次访问这些页面时,直接从缓存中加载并显示给用户,这样缩短了响应的时间,减少服务器的负载。为了让代理服务器或浏览器在一段时间后更新页面,我们可以使用Expires实体报头域指定页面过期的时间。当用户又一次访问页面时,如果Expires报头域给出的日期和时间比Date普通报头域给出的日期和时间要早(或相同),那么代理服务器或浏览器就不会再使用缓存的页面而是从服务器上请求更新的页面。不过要注意,即使页面过期了,也并不意味着服务器上的原始资源在此时间之前或之后发生了改变。  
          Expires实体报头域使用的日期和时间必须是RFC   1123中的日期格式,例如:  
  Expires:   Thu,   15   Sep   2005   16:00:00   GMT  
          HTTP1.1的客户端和缓存必须将其他非法的日期格式(也包括0)看作已过期。例如,为了让浏览器不要缓存页面,我们也可以利用Expires实体报头域,设置它的值为0,如下(JSP):response.setDateHeader("Expires",0);

 

除掉注释的部分就是一个完整的包,向/user/tmpUpload.php上传了一个文件。  
  =========http头==========  
  POST   /user/tmpUpload.php   HTTP/1.1  
  Content-Type:   multipart/form-data;   boundary=---------------------------7d53b9297030e  
  Content-Length:   1017  
   
  -----------------------------7d53b9297030e  
  Content-Disposition:   form-data;   name="upload";   filename="C:\Documents.and.Settings\hwy\桌面\attachment"  
  Content-Type:   p  
   
  11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111  
  -----------------------------7d53b9297030e--  
     
    ===========结束============   

转载于:https://www.cnblogs.com/cumtb3S/archive/2010/05/30/1747497.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

转:vc中如何通过http的post方式上传文件 的相关文章

随机推荐

  • 常用的ROS命令

    在这里记一下 xff0c 以免以后忘记了 打开ros master xff1a roscore 查看topic列表 xff1a rostopic list v 打印topic内容 xff1a rostopic echo topic 将bag
  • Rational Rose正逆向工程(类图转Java代码,Java代码转类图)

    xfeff xfeff 一 xff0c 正向工程 1 设置默认语言为Java xff0c Tools gt Options gt Notation gt default xff1a 选择Java 2 设置环境变量ClassPath xff0
  • Linux 下编译安装OpenCV

    Cmake的安装 OpenCV 2 2以后版本需要使用Cmake生成makefile文件 xff0c 因此需要先安装cmake ubuntu下安装cmake比较简单 xff0c apt get install cmake 如果觉得自带的版本
  • Python模块整理(三):子进程模块subprocess

    本来收集整理网络上相关资料后整理 xff1a 从python2 4版本开始 可以用subprocess这个模块来产生子进程 并连接到子进程的标准输入 输出 错误中去 xff0c 还可以得到子进程的返回值 subprocess意在替代其他几个
  • access$000方法和JAVA内部类的反编译

    反编译了几个内部类 xff0c 看到有对外部类access 000 access 100 access 200等方法的调用代码 xff0c 但反编译外部类时 xff0c 却看不到这些代码 这涉及到JAVA编译器中对内部类的处理方式 为了让内
  • c语言中寄存器设置方法,C 编程之——寄存器赋值操作

    通过这段时间的工作和学习 xff0c 我感觉在嵌入式硬件编程中 xff0c 大多数情况下都是对相应硬件的功能寄存器进行设置和操作 一 寄存器的设置和操作特性 1 xff0c 一个寄存器的每个位有其不同的意义 xff0c 进行不同的设置会使硬
  • 室内无人机全自动巡逻系统,或比固定摄像头省钱

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 两家欧洲公司开发了世界上第一款室内无人机监视自动巡逻系统 xff0c 可以实时转播录像 xff0c 并在发现入侵者时发出警报 无人机会在它所监测的建筑物的走廊和房间按照预定
  • 电子设计大赛可以用linux开发板嘛,【一转再转】电子设计大赛应该怎么准备?...

    最主要的是学习什么课程 电工电路基础 低频电子线路 数字电路 高频电子线路 电子测量 智能仪器原理及应用 传感器技术 电机与电气控制 信号与系统 单片机接口原理及应用 等等 所要学习的科目当然不能定局 xff0c 知识面越广越好 xff0c
  • px4固定翼无人机姿态控制理解

    学习px4代码也有一段时间了 xff0c 所以想写一写 xff0c 自己的一些学习心得吧 xff0c 也算是笔记吧 在px4这套代码中 xff0c 每一个功能都是一个模块 xff0c 例如姿态控制 xff0c 也就是一个应用程序 xff0c
  • PHP 模拟 HTTP 摘要认证(Digest )

    lt php header 34 Content type text html charset 61 utf 8 34 php摘要认证 users 61 39 dee 39 61 gt 39 123456 39 39 admin 39 61
  • c语言中strcat函数的作用,strcat函数的作用是什么?

    strcat函数的作用是复制一个字符串 xff0c 将这个字符串拼接在另一个字符串后面 strcat 函数接受两个字符串作为参数 xff0c 会把第二个字符串的备份附加在第一个字符串末尾 xff0c 并把拼接后形成的新字符串作为第一个字符串
  • 带参数宏定义和函数的区别

    define S a b a b area 61 S 3 2 int S int a int b int s s 61 a b return s 这两个有什么区别 define S a b a b area 61 S 3 2 尽量少使用宏定
  • http协议调试代理工具Fiddler

    Fiddler是一款WEB调试工具 它可以记录所有客户端到服务器端的HTTP请求 Fiddler启动时 会默认代理IE浏览器的127 0 0 1 8888 其它浏览器则要手动设置 工作原理 Fiddler是以代理WEB服务器的形式工作的 它
  • Windows脚本中等待几秒的替代方法

    用ping命令实现等待 等待的秒数可以用 n 参数来控制 如果要等待10秒 xff0c 参数是 n 11 ping n 11 127 0 0 1 gt nul 64 more 64 来自 ITPUB博客 xff0c 链接 xff1a htt
  • http协议之digest认证实现

    参考 http blog csdn net jszj article details 8918967 https wenku baidu com view 22be2dcf83d049649b6658ff html http blog cs
  • 请求头authorization_postman教程-08-认证(Authorization)

    这又是一个非常实用的功能 对我们做接口测试来说 经常要处理登录认证的情况 如果不用这个Authorization其实也能解决认证的问题 无非就是把要认证的数据按照要求在指定位置传入参数即可 比如我们之前测试的系统 登录后返回的token要在
  • 字符串连接函数strcat

    C 43 43 宝典 第6章数组与字符串 xff0c 本章将介绍一种数据集合类型 数组 与结构体不同 xff0c 数组是同一类型数据的集合 而且在内存中 xff0c 数组中的元素依次排列 xff0c 一个紧邻一个 本节为大家介绍字符串连接函
  • Python3.x爬虫教程:爬网页、爬图片、自己主动登录

    林炳文Evankaka原创作品 转载请注明出处http blog csdn net evankaka 摘要 xff1a 本文将使用Python3 4爬网页 爬图片 自己主动登录 并对HTTP协议做了一个简单的介绍 在进行爬虫之前 xff0c
  • Flask 环境搭建

    引用自 xff1a https www cnblogs com rongtangzi p 6623122 html bin env python coding utf 8 describe this script shoud install
  • 转:vc中如何通过http的post方式上传文件

    文章引自 xff1a http blog myspace cn e 404248359 htm vc中如何通过http的post方式上传文件 HTTP响应 在接收和解释请求消息后 xff0c 服务器会返回一个HTTP响应消息 与HTTP请求