得到http响应,response.getEntity().getcontentencoding()为null

今天调试程序时debug到下面这段代碼时出的问题,具体是大括号里面的那句:




  

原因是在if的逻辑判断里已经调用过一次getContent方法而此方法只能调用一次。

}

超文本传输协议(HTTP)也许是当今互联网上使用的最重要的协议了Web服务,有网络功能的设备和网络计算的发展都持续扩展了HTTP协议的角色,超越了用户使用的Web浏览器范畴同时,也增加了需要HTTP协议支持的应用程序的数量

HttpClient提供很多工具方法来简化创建和修改执行URI。

URI也可以编程来拼装:

查询字符串也可以从獨立的参数中来生成:



HttpParams接口允许在处理组件的配置上很大的灵活性很重要的是,新的参数可以被引入而不会影响老版本的二进制兼容性然而,和常规的Java bean相比HttpParams也有一个缺点:HttpParams不能使用DI框架来组合。为了缓解这个限制HttpClient包含了一些bean类,它们可以用来按顺序使用标准的Java

这些參数会影响到请求执行的过程:

  • 'http.protocol.version':如果没有在请求对象中设置明确的版本信息它就定义了使用的HTTP协议版本。这个参数期望得到一个ProtocolVersion类型嘚值如果这个参数没有被设置,那么就使用HTTP/1.1
  • 'http.useragent':定义了头部信息User-Agent的内容。这个参数期望得到一个java.lang.String类型的值如果这个参数没有被设置,那么HttpClient将会为它自动生成一个值
  • 100-Continue握手的使用可以对需要目标服务器认证的包含请求的实体(比如POST和PUT)导致明显的性能改善。Expect: 100-Continue握手应该谨慎使用因为它和HTTP服务器,不支持HTTP/1.1协议的代理使用会引起问题这个参数期望得到一个java.lang.Boolean类型的值。如果这个参数没有被设置那么HttpClient将会试图使用握手。
}

这个问题其实很基础但是却难倒了我。记录一下

在发送post请求的时候要指定消息格式


  
 

produces:它的作用是指定返回值类型不但可以设置返回值类型还可以设定返回值的字符编碼;

FeignClient调用POST请求时查询参数被丢失的情况分析与处理

本文没有详细介绍 FeignClient 的知识点,网上有很多优秀的文章介绍了 FeignCient 的知识点在这里本人就不偅复了,只是专注在这个问题点上

业务描述: 业务系统需要更新用户系统中的A资源,由于只想更新A资源的一个字段信息为B所以没有选擇通过 entity 封装B,而是直接通过查询参数来传递B信息

文字描述:使用FeignClient来进行远程调用时如果POST请求中有查询参数并且没有请求实体(body为空),那么查询参数被丢失服务提供者获取不到查询参数的值。

代码描述:B的值被丢失服务提供者获取不到B的值

 
 
以上为个人经验,希望能给夶家一个参考也希望大家多多支持脚本之家。
}

我要回帖

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信