zoukankan      html  css  js  c++  java
  • iphone网络编程 http请求 get / post(发送二进制文件) 总结

    首先说说一下http请求

    http请求最长用的方法是 get 和 post 方法

    get方法和post方法相比理解起来比较简单,get方法可以直接请求一个url,也可以url后面拼接上参数作为一个新的url地址进行请求。get方法后面的value要经过unicode编码。form的enctype属性默认为application/x-www-form-urlencoded。不能发送二进制文件。

    post方法相对要复杂一些。首先post方法要设置key和value ,所有的key和value都会拼接成 key1=value1&key2=value2的样式的字符串,然后这个字符串转化为二进制放到 http请求的body中。当请求发送的时候,也就跟随body一起传给服务器。http请求Content-Type设置为:application/x-www-form-urlencoded。这里讲的只是简单的post请求,一般发送文件不会选择这种方式(从技术方面考虑也可以发送文件,就是把文件以 key 和 value的方式放入)。下面我们再讨论一下post发送二进制文件更加普遍的方法。

    post发送文件首先网页中的form的enctype设置为multipart/form-data,然后浏览器会把表单中需要提交的项目分隔,并为每个部分加上Content-Disposition(form-data或者file),Content-Type(默认为text/plain),name(控件name)等信息,并加上分割符(boundary)。
    如果有以下form,并选择了file1.txt上传
    //作者:禚来强  电话:18671682672  email:zhuolaiqiang@gmail.com  QQ:1287976580  QQ讨论群:79190809
    //原问地址:  http://blog.csdn.net/diyagoanyhacker/article/details/6685398  转贴请保留
    <form action="http://server.com/cgi/handle"
           enctype="multipart/form-data"
           method="post">
       <input type="text" name="submit-name" value="chmod777"><br />
       What files are you sending? <input type="file" name="files"><br />
    < /form>


    则有如下body:
    Content-Type: multipart/form-data; boundary=AaB03x


       --AaB03x
       Content-Disposition: form-data; name="submit-name"


       chmod777
       --AaB03x
       Content-Disposition: form-data; name="files"; filename="file1.txt"
       Content-Type: text/plain


       ... contents of file1.txt ...
       --AaB03x--
    以上重点讲解的post请求的两种方式。如果还是不明白可以和我一起讨论。
  • 相关阅读:
    数组和排序算法(冒泡、选择、插入排序)
    异常
    线程的五个状态,sleep和wait
    ArrayList、Vector、LinkedList
    String,StringBuffer,StringBuilder的区别
    Math.round(),Math.ceil(),Math.floor()的区别
    单例模式之双重锁模式、静态内部类模式、饿汉模式、懒汉模式,和安全的懒汉模式
    工厂模式简单的汽车工厂
    存储过程的优点
    数据库SQL特点数据查询,数据操纵,数据定义,数据控制,建立索引, 事务acid,数据库隔离级别
  • 原文地址:https://www.cnblogs.com/jackljf/p/3589368.html
Copyright © 2011-2022 走看看