httpclient中关于BasicNameValuePair 传参问题

BasicNameValuePair实现了apache http的NameValuePair这个接口,关于接口NameValuePair的定义如下:

public interface NameValuePair {
    String getName();

    String getValue();
}

可以发现该接口中声明了两个方法,返回值均为String,也就是在利用

new BasicNameValuePair(String1,String2)

进行参数传递时,只能使用String这种类型进行传递,事实上表单提交的get和post只能传递String类型,所以如何传递非String类型的参数,比如boolean,int。

easy,在传递之前将对应的类型预先转成String就行了,为何这样可行呢,关键在于这一行

httpPost.setEntity(new UrlEncodedFormEntity(params));

这里放到http entity里面的类型都是字节类型,HTTP协议与FTP,SMTP类似都是通过plain-text ASCII来进行CS数据通信的(不像TCP使用二进制,有历史原因,也更加节约带宽和方便调试),实际上并不存在什么String,Boolean,Integer数据类型,都是通过将byte进行ASCII编码来实现的,服务器端反序列化成String类型后,通过springMVC的框架进行解析,注意这里也需要区分提交方式,框架可能会选取适当的httpMessageConverter进行解析(这个是服务器关注的事情了)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,754评论 18 399
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,868评论 18 139
  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,356评论 11 349
  • 在20岁的年纪,该选择奋斗还是安逸的生活? 今早起,看李宗盛的一场演唱会,唱至一半时他说了这么一段话: 在这么些年...
    许虫阅读 335评论 2 1
  • 许多次,困了,眼皮沉重,还是依旧的熬夜,看着连续剧,玩着手机小游戏。这样的无行为约束感,犹如鸦片毒害般的牵制。明明...
    格小主阅读 654评论 0 0