zoukankan      html  css  js  c++  java
  • java HttpClient提交post 请求时 MultipartEntity与UrlEncodedFormEntity请求实体的区别

    主要是MultipartEntity与UrlEncodedFormEntity参数不同

    经过在网上查询资料发现,这两个类均实现了HttpEntity接口,而二者的区别就和html表单有关系,

    html中的form 表单有两种:除了传统的application/x-www-form-urlencoded表单,我们另一个经常用到的是上传文件用的表单,这种表单的 类型为multipart/form-data。  后者主要是用来上传文件所用

    UrlEncodeFormEntity 用于不包含文件上传的表单,以NameValuePair键值对的形式来使用

             List<NameValuePair> pairs = new ArrayList<NameValuePair>();  

    1. NameValuePair pair1 = new BasicNameValuePair("supervisor", supervisorEt.getEditableText().toString());  
    2. NameValuePair pair2 = new BasicNameValuePair("content", superviseContentEt.getEditableText().toString());  
    3. NameValuePair pair3 = new BasicNameValuePair("userId", String.valueOf(signedUser.getId()));  
    4. pairs.add(pair1);  
    5. pairs.add(pair2);  
    6. pairs.add(pair3);  
    7. httpPost.setEntity(new UrlEncodedFormEntity(pairs, HTTP.UTF_8))

    MultipartEntity  可以上传一个或多个文件

         

    MultipartEntity reqEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE, null,Charset.forName("UTF-8"));

    reqEntity.addPart(Constans.FILE_BODY, new FileBody(new File("C://1.txt"));

    //ContentBody body = new InputStreamBody(new FileInputStream(file),file.getName());

    这种方式提交参数

    addPart的第二个参数为ContentBody 

    FileBody,FileIputStreamBody,ByteArrayBody均可以作为参数传入,可见HttpCLient支持文件,文件流,字节数组的方式向后台

    总结:

         本次开发 让我更加理解Http协议, post文件的方式是写入请求的报文实体(reqEntity),

  • 相关阅读:
    【Java123】enum枚举及其应用
    sql查询优化_慢查询
    9.4 如何实现属性可修改的函数装饰器?
    9.2 如何为被装饰的函数保存元数据?
    python的如何通过实例方法名字的字符串调用方法?
    9.1 如何使用函数装饰器 用装饰器解决重复计算问题
    asyncio 笔记
    python笔记截图
    list绑定
    表单数据交互
  • 原文地址:https://www.cnblogs.com/lilefordream/p/5241046.html
Copyright © 2011-2022 走看看