我收到一个奇怪的错误。这曾经很管用。我不确定是不是应用服务器、代码、jvm?
JVM: Java Virtual Machine initialized.
Java runtime version: pwa6480sr4fp5-20170421_01 (SR4 FP5)
JVM version: JRE 1.8.0 Windows Server 2008 R2 amd64-64 20170419_344392 (JIT enabled, AOT enabled) J9VM - R28_20170419_1004_B344392 JIT - tr.r14.java_20170419_344392 GC - R28_20170419_1004_B344392 J9CL - 20170419```javascriptJVM:由以下原因引起:
JVM: com.fasterxml.jackson.core.JsonParseException:意外字符('<‘(代码60)):应为有效值(数字、字符串、数组、对象、'true’、'false‘或'null')
JVM: at Source: sun.net.www.protocol.http.HttpURLConnection$HttpInputStream@2a19861e;行: 1,列:2
JVM: com.fasterxml.jackson.core.JsonParser._constructError(JsonParser.java:1524)
JVM: com.fasterxml.jackson.core.base.ParserMinimalBase._reportError(ParserMinimalBase.java:557)
JVM: com.fasterxml.jackson.core.base.ParserMinimalBase._reportUnexpectedChar(ParserMinimalBase.java:475)
JVM: com.fasterxml.jackson.core.json.UTF8StreamJsonParser._handleUnexpectedValue(UTF8StreamJsonParser.java:2343)
JVM: com.fasterxml.jackson.core.json.UTF8StreamJsonParser._nextTokenNotInObject(UTF8StreamJsonParser.java:818)
JVM: com.fasterxml.jackson.core.json.UTF8StreamJsonParser.nextToken(UTF8StreamJsonParser.java:698)
JVM: com.fasterxml.jackson.databind.ObjectMapper._initForReading(ObjectMapper.java:3031)
JVM: com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:2978)
JVM: com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2158)
JVM: org.springframework.http.converter.json.MappingJackson2HttpMessageConverter.readJavaType(MappingJackson2HttpMessageConverter.java:225)
导入org.springframework.web.client.RestTemplate;
公共静态RestTemplate getRestTemplate() {
RestTemplate restTemplate = new RestTemplate(); List<HttpMessageConverter<?>> messageConverters = new ArrayList<HttpMessageConverter<?>>(); MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter(); List<MediaType> mediaTypes = new ArrayList<MediaType>(); mediaTypes.add(MediaType.TEXT_HTML); mediaTypes.add(MediaType.APPLICATION_JSON); converter.setSupportedMediaTypes(mediaTypes); messageConverters.add(converter); messageConverters.add(new StringHttpMessageConverter()); restTemplate.setMessageConverters(messageConverters); return restTemplate;}//调用到了
getRestTemplate().getForEntity(url+"/bargetype",BargeType[]> responseEntity =ResponseEntity< BargeType[].class);
我用浏览器检查了传入的URL,我得到了JSON。我将响应复制并粘贴到json lint中,并成功验证了它。
我猜是返回了一个错误,因为错误消息在异常中有'<‘。
我的问题是:
1)有没有更好的模式来使用RestTemplate?
2)有没有办法获取http错误?
更新5/3/2018使用Fiddler Daisy推荐,GET响应头使用浏览器在我的工作站上(然而,应用程序是在服务器上运行)。
HTTP/1.1 200 OK
Server: Lotus-Domino
Date: Thu, 03 May 2018 15:28:23 GMT
Connection: close
Content-Type: text/html; charset=UTF-8
[{"contract":xxxx,"customer":".....发布于 2018-05-04 12:41:27
默认情况下,无论您在XPage中执行什么操作,XPage都会将其结果返回为text/html。如果如示例所示,计算JSON (而不是看起来像JSON的HTML ),则可以将返回的标头覆盖为application/json。然后,添加一个在浏览器中呈现JSON的plugin to Chrome,以便您可以进行检查。
最有可能的情况是:如果服务器调用Domino,它如何进行身份验证?当您使用基于会话的身份验证失败时,将不会返回401,而是基于HTML的用户名/密码输入表单(使用匿名窗口在浏览器中尝试页面)。
在Domino配置中,您可以指定除了会话之外,URL还可以使用基本身份验证。然后,您的服务器可以发送https://user:password@theotherserver.com/yourdb.nsf/somexpage.xsp来获取结果。
所以首先要检查:你的服务器是否使用了用户/通行证,是否有足够的访问权限。
发布于 2019-01-24 01:00:21
Rest Assured无法解析指定的格式
例如,对于XML,您需要使用
response.as(ClassName.class, ObjectMapperType.JAXB);可以与REST Assured一起使用的其他预定义对象映射器如下:
public enum ObjectMapperType {
JACKSON_2, JACKSON_1, GSON, JAXB
}https://stackoverflow.com/questions/50158404
复制相似问题