学习http请求中遇到的坑

  • 场景
    • 使用的pom.xml

场景

实现某APP的自动登录进行一些登陆后查看用户信息,因为登陆需要输入验证码,本人的能力有限,自己写不出来提取图片验证码信息的功能,只能调用别人的API实现了。

使用的pom.xml

<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.55</version>
</dependency>
<dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>RELEASE</version>
</dependency>
<dependency><groupId>com.wade</groupId><artifactId>util</artifactId><version>1.0-SNAPSHOT</version>
</dependency>
<dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.3.5</version>
</dependency>

一开始写的时候用的不是这个httpclient,用的是下面这个,在使用过程中出现了问题,而且个人感觉api使用起来很不方便,所以就换成了org.apache.httpcomponents.httpclient 。

<dependency><groupId>commons-httpclient</groupId><artifactId>commons-httpclient</artifactId><version>3.1</version>
</dependency>

从这里面遇到的坑:

  • 先看下代码
List<NameValuePair> urlParameters = new ArrayList<>();
urlParameters.add(new BasicNameValuePair("name", this.name));
urlParameters.add(new BasicNameValuePair("password", this.password));
urlParameters.add(new BasicNameValuePair("rememberMe", REMEMBER_ME));
urlParameters.add(new BasicNameValuePair("verifyCode", codeBase64.get("verifyCode").toString()));
urlParameters.add(new BasicNameValuePair("verifyCodeToken", codeBase64.get("verifyCodeToken").toString()));
UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(urlParameters);

首先上面的这一段是在发送httppost请求的时候携带的参数,使用NameValuePair只是一个简单的key-value,形式单一,而且局限性会比较大,这里携带的参数要求必须拼接成符合json格式的字符串才可以,用UrlEncodedFormEntity来装载的参数却不能满足这个要求,会报415 Unsupported Media Type 错误,但是对于一个面向Google编程的小白来说,都不是事;查了一下,都说是没有指定请求头的Content-Type:application/json;charset=UTF-8,加上就没问题的,然而加上了之后,请求还是报了400的错误。后来想想这个只是说明请求体内容是json,但是实际上并不符合json格式也没有用啊!所以就用了下面的写法:

JSONObject jsonObject = new JSONObject();
jsonObject.put("name", this.name);
jsonObject.put("password", this.password);
jsonObject.put("rememberMe", REMEMBER_ME);
jsonObject.put("verifyCode", codeBase64.get("verifyCode").toString());
jsonObject.put("verifyCodeToken", codeBase64.get("verifyCodeToken").toString());
post.setEntity(new StringEntity(jsonObject.toString(), HTTP.UTF_8));

注:有点忙,先记录到这里,后续再补充,不会用makedown,有点丑,请见谅。

关于http请求中使用NameValuePair遇到的坑相关推荐

  1. 异步请求中jetty处理ServletRequestListener的坑

    标题起得比较诡异,其实并不是坑,而是jetty似乎压根就没做对异步request的ServletRequestListener的特殊处理,如果文中有错误欢迎提出,可能自己有所疏漏了. 之前遇到了一个b ...

  2. 【2012百度之星/资格赛】H:用户请求中的品牌 [后缀数组]

    时间限制: 1000ms 内存限制: 65536kB 描述 馅饼同学是一个在百度工作,做用户请求(query)分析的同学,他在用户请求中经常会遇到一些很奇葩的词汇.在比方说"johnsonj ...

  3. postman简单教程,如何在请求中引用上次请求返回的值

    做接口测试,一定会遇到这种情况,需要拿上次请求的值在本次请求中使用,比如,我们去测试一个东西,要去登录才能做其他的操作,需要拿到登录返回数据中的某些字段,比如,token啊等... 如果发一次请求,就 ...

  4. vue.js与ajax删除,javascript - VueJs和VueResource,从Ajax请求中删除标头字段 - 堆栈内存溢出...

    当实例化Vuejs (2.2.6)和Vue-resource (1.2.1)时 ,我使用以下代码设置标头授权,通过这种方式,我可以将所有请求授权给我的API: Vue.http.headers.com ...

  5. java获取jsp页面参数_jsp页面中获取servlet请求中的参数方法总结

    jsp页面中获取servlet请求中的参数的办法详解 在JAVA WEB应用中,如何获取servlet请求中的参数,并传递给跳转的JSP页面?例如访问http://localhost:8088/bbs ...

  6. post传值php取不到数据,post请求中的参数形式和form-data提交数据时取不到的问题...

    @Controller 页面form表单请求时不会丢数据 返回json数据时需要加 注解@ResponseBody 请求格式如下 @ResponseBody public Object login(S ...

  7. SpringMVC无法获取请求中的参数的问题的调查与解决(1)

    SpringMVC无法获取请求中的参数的问题的调查与解决(1) 参考文章: (1)SpringMVC无法获取请求中的参数的问题的调查与解决(1) (2)https://www.cnblogs.com/ ...

  8. PHP cURL可以在单个请求中检索响应标头和正文吗?

    本文翻译自:Can PHP cURL retrieve response headers AND body in a single request? Is there any way to get b ...

  9. 获取烧瓶请求中收到的数据

    本文翻译自:Get the data received in a Flask request I want to be able to get the data sent to my Flask ap ...

最新文章

  1. 自定义cacti插件监控jvm
  2. 通过页面埋点做监控却不影响性能?解密ARMS前端监控数据上报技术内幕
  3. poj 1236 Network of Schools
  4. linux 挂起 移动电脑,linux 系统挂起
  5. greensock包使用
  6. ASP.NET Web 页面生命历程中的一天
  7. Bootstrap表格样式
  8. ViedoUtil获取视频的缩略图
  9. 想成为高薪的Java架构师该如何做?
  10. HTML:H5新特性
  11. java浪漫代码_30条代码,拿去“表白”
  12. 华为NP课程笔记21-QoS服务模型
  13. 现代通信技术课程小结
  14. 自动驾驶——为什么需要仿真?
  15. 计算机网络国家职业三级,计算机网络管理员国家职业标准
  16. java文件下载文件损坏_java上传并下载以及解压zip文件有时会报文件被损坏错误分析以及解决...
  17. android模拟器没反应,Android模拟器无法正常工作
  18. java 取一个数的各个位数
  19. 深圳“毕业”生灵活就业社保缴纳方式
  20. 什么副业能让你的收入增长十倍?

热门文章

  1. 大数据技术课堂小笔记
  2. 全网最全RocketMQ 用法及原理总结
  3. iOS开发——App集成短信验证码
  4. [回忆][职场]几个不愉快的求职经验,与我人生的奇遇
  5. Hack The Box——Scavenger
  6. 人脸识别SeetaFace2原理与代码详解
  7. c#读蓝牙数据_通过蓝牙接收数据到c#程序
  8. Lightly,超好用的在线代码工具
  9. 中华PDF开天裁决传奇这个该死的东西怎么删除?
  10. stm32 驱动 触摸屏