情景再现:

上传文件到.net(wcf)后台时,总是上传不成功,后台要求Content-Type是application/octet-stream,我使用multipart/form-data方式,content-type是multipart/form-data,后来查了查这是两种不同的内容类型,在http的请求体中,数据组织方式不一样,所以,后台接收失败。

multipart/form-data:

1、既可以提交普通键值对,也可以提交(多个)文件键值对。

2、HTTP规范中的Content-Type不包含此类型,只能用在POST提交方式下,属于http客户端(浏览器、java httpclient)的扩展

3、通常在浏览器表单中,或者http客户端(java httpclient)中使用。

页面中,form的enctype是multipart/form-data,提交时,content-type也是multipart/form-data。

multipart/form-data格式,

 
  1. POST http://www.xx.com/myproject/service1

  2. Host: 192.168.0.201:8694

  3. Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW

  4. Cache-Control: no-cache

  5. Postman-Token: c3d85a6c-9849-7e3e-5c89-5b994b335b1d

  6. ----WebKitFormBoundary7MA4YWxkTrZu0gW

  7. Content-Disposition: form-data; name="name1"

  8. value1

  9. ----WebKitFormBoundary7MA4YWxkTrZu0gW

  10. Content-Disposition: form-data; name="name2"

  11. value2

  12. ----WebKitFormBoundary7MA4YWxkTrZu0gW

  13. Content-Disposition: form-data; name="file1"; filename="94b5b232gw1ewlx3p595wg20ak0574qq.gif"

  14. Content-Type: image/gif

  15. ----WebKitFormBoundary7MA4YWxkTrZu0gW

  16. Content-Disposition: form-data; name="file2"; filename="1443175219259.jpg"

  17. Content-Type: image/jpeg

  18. ----WebKitFormBoundary7MA4YWxkTrZu0gW

application/octet-stream

1、只能提交二进制,而且只能提交一个二进制,如果提交文件的话,只能提交一个文件,后台接收参数只能有一个,而且只能是流(或者字节数组)

2、属于HTTP规范中Content-Type的一种

3、很少使用

application/x-www-form-urlencoded

1、不属于http content-type规范,通常用于浏览器表单提交,数据组织格式:name1=value1&name2=value2,post时会放入http body,get时,显示在在地址栏。

2、所有键与值,都会被urlencoded,请查看urlencoder

数据组织格式

 
  1. POST http://www.xx.com/myproject/service HTTP/1.1

  2. Host: 192.168.0.201:8694

  3. Content-Type: application/json

  4. Cache-Control: no-cache

  5. Postman-Token: f5f6240c-08d3-8695-9473-607038f71eaa

  6. name11=file1&name2=value2

参考:

HTTP Content-type对照表

原文地址:https://blog.csdn.net/andrewniu/article/details/81533905

最新文章

  1. iOS 关于PCH文件(全局文件)的介绍
  2. IIS 7 Web服务器上部署ASP.NET网站(转)
  3. JAVA 设计模式 状态模式
  4. android 事件传递机制 心得
  5. js 下载文件 window.location.href
  6. 【性能诊断】二、单功能场景的性能分析(fiddler、SQL Profiler)
  7. Python基础-作用域和命名空间(Scope and Namespace)
  8. 在winform中怎样实现好看的treeview样式
  9. ASP.NET Web API 2中的错误处理
  10. Django模板修炼
  11. 安装完成Dynamics 365 CE后别忘了更改维护作业的运行时间
  12. c/c++ linux 进程间通信系列4,使用共享内存
  13. tomcat和springboot访问日志及分析
  14. 物联网架构成长之路(28)-Docker练习之MQ中间件(Kafka)
  15. MyBatis注解方式批量插入操作
  16. bzoj1663: [Usaco2006 Open]赶集
  17. react面试问题总结
  18. [转]小心PHP的类定义顺序与继承的问题
  19. Springmvc之接受请求参数二
  20. 树&二叉树&&满二叉树&&完全二叉树&&完满二叉树

热门文章

  1. 实现手机网页调起原生微信朋友圈分享的工具nativeShare.js
  2. Mathematica 和 MATLAB、Maple 并称为三大数学软件
  3. DTcms iis6 伪静态 iis配置方法 【图解】
  4. RocksDB 之Write Ahead Log(WAL)
  5. iOS 9开发小技巧
  6. webpack配置vue项目
  7. 【JZOJ4835】【GDOI2017模拟10.31】量化交易
  8. Java练习 SDUT-3339_计算长方形的周长和面积(类和对象)
  9. @codeforces - 444A@ DZY Loves Physics
  10. Centos7环境下搭建Nginx+Lua+Redis进行数据存取