rest Java RESTful客户端在服务器上运行时无法调用api
我有一个在Java14 Spring Boot微服务上运行的RESTful服务。我从运行在Java 7应用程序上的客户端调用它
+----------------------+ +-------------------------------+
| Java 7 REST Client | ----> | Java 14 Spring Boot Service |
+----------------------+ +-------------------------------+
我有一个调用api的RESful客户端。当我从测试main
方法调用它时,它成功地工作了,我得到了预期的结果,并且在客户端和服务器上没有错误
问题
当我在JBoss中启动Java7(Struts)应用程序,并通过同一个RESTful客户机调用api时,会出现错误
在Java 14服务器上:
java.lang.StackOverflowError: null
at com.fasterxml.jackson.core.sym.ByteQuadsCanonicalizer.findName(ByteQuadsCanonicalizer.java:576) ~[jackson-core-2.11.0.jar:2.11.0]
at com.fasterxml.jackson.core.json.UTF8StreamJsonParser.findName(UTF8StreamJsonParser.java:2266) ~[jackson-core-2.11.0.jar:2.11.0]
at com.fasterxml.jackson.core.json.UTF8StreamJsonParser.parseLongName(UTF8StreamJsonParser.java:1875) ~[jackson-core-2.11.0.jar:2.11.0]
at com.fasterxml.jackson.core.json.UTF8StreamJsonParser.parseMediumName2(UTF8StreamJsonParser.java:1839) ~[jackson-core-2.11.0.jar:2.11.0]
at com.fasterxml.jackson.core.json.UTF8StreamJsonParser.parseMediumName(UTF8StreamJsonParser.java:1796) ~[jackson-core-2.11.0.jar:2.11.0]
at com.fasterxml.jackson.core.json.UTF8StreamJsonParser._parseName(UTF8StreamJsonParser.java:1731) ~[jackson-core-2.11.0.jar:2.11.0]
at com.fasterxml.jackson.core.json.UTF8StreamJsonParser.nextToken(UTF8StreamJsonParser.java:761) ~[jackson-core-2.11.0.jar:2.11.0]
at com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializer$Vanilla.deserialize(UntypedObjectDeserializer.java:646) ~[jackson-databind-2.11.0.jar:2.11.0]
at com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializer$Vanilla.mapObject(UntypedObjectDeserializer.java:893) ~[jackson-databind-2.11.0.jar:2.11.0]
at com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializer$Vanilla.deserialize(UntypedObjectDeserializer.java:652) ~[jackson-databind-2.11.0.jar:2.11.0]
at com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializer$Vanilla.mapObject(UntypedObjectDeserializer.java:893) ~[jackson-databind-2.11.0.jar:2.11.0]
at com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializer$Vanilla.deserialize(UntypedObjectDeserializer.java:652) ~[jackson-databind-2.11.0.jar:2.11.0]
at com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializer$Vanilla.mapObject(UntypedObjectDeserializer.java:893) ~[jackson-databind-2.11.0.jar:2.11.0]
at com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializer$Vanilla.deserialize(UntypedObjectDeserializer.java:652) ~[jackson-databind-2.11.0.jar:2.11.0]
at com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializer$Vanilla.mapObject(UntypedObjectDeserializer.java:893) ~[jackson-databind-2.11.0.jar:2.11.0]
at com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializer$Vanilla.deserialize(UntypedObjectDeserializer.java:652) ~[jackson-databind-2.11.0.jar:2.11.0]
at com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializer$Vanilla.mapObject(UntypedObjectDeserializer.java:893) ~[jackson-databind-2.11.0.jar:2.11.0]
at com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializer$Vanilla.deserialize(UntypedObjectDeserializer.java:652) ~[jackson-databind-2.11.0.jar:2.11.0]
at com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializer$Vanilla.mapObject(UntypedObjectDeserializer.java:893) ~[jackson-databind-2.11.0.jar:2.11.0]
at com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializer$Vanilla.deserialize(UntypedObjectDeserializer.java:652) ~[jackson-databind-2.11.0.jar:2.11.0]
at com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializer$Vanilla.mapObject(UntypedObjectDeserializer.java:893) ~[jackson-databind-2.11.0.jar:2.11.0]
at com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializer$Vanilla.deserialize(UntypedObjectDeserializer.java:652) ~[jackson-databind-2.11.0.jar:2.11.0]
at com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializer$Vanilla.mapObject(UntypedObjectDeserializer.java:893) ~[jackson-databind-2.11.0.jar:2.11.0]
at com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializer$Vanilla.deserialize(UntypedObjectDeserializer.java:652) ~[jackson-databind-2.11.0.jar:2.11.0]
at com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializer$Vanilla.mapObject(UntypedObjectDeserializer.java:893) ~[jackson-databind-2.11.0.jar:2.11.0]
at com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializer$Vanilla.deserialize(UntypedObjectDeserializer.java:652) ~[jackson-databind-2.11.0.jar:2.11.0]
at com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializer$Vanilla.mapObject(UntypedObjectDeserializer.java:893) ~[jackson-databind-2.11.0.jar:2.11.0]
at com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializer$Vanilla.deserialize(UntypedObjectDeserializer.java:652) ~[jackson-databind-2.11.0.jar:2.11.0]
at com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializer$Vanilla.mapObject(UntypedObjectDeserializer.java:893) ~[jackson-databind-2.11.0.jar:2.11.0]
at com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializer$Vanilla.deserialize(UntypedObjectDeserializer.java:652) ~[jackson-databind-2.11.0.jar:2.11.0]
at com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializer$Vanilla.mapObject(UntypedObjectDeserializer.java:893) ~[jackson-databind-2.11.0.jar:2.11.0]
at com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializer$Vanilla.deserialize(UntypedObjectDeserializer.java:652) ~[jackson-databind-2.11.0.jar:2.11.0]
at com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializer$Vanilla.mapObject(UntypedObjectDeserializer.java:893) ~[jackson-databind-2.11.0.jar:2.11.0]
at com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializer$Vanilla.deserialize(UntypedObjectDeserializer.java:652) ~[jackson-databind-2.11.0.jar:2.11.0]
at com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializer$Vanilla.mapObject(UntypedObjectDeserializer.java:893) ~[jackson-databind-2.11.0.jar:2.11.0]
at com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializer$Vanilla.deserialize(UntypedObjectDeserializer.java:652) ~[jackson-databind-2.11.0.jar:2.11.0]
at com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializer$Vanilla.mapObject(UntypedObjectDeserializer.java:893) ~[jackson-databind-2.11.0.jar:2.11.0]
at com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializer$Vanilla.deserialize(UntypedObjectDeserializer.java:652) ~[jackson-databind-2.11.0.jar:2.11.0]
at com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializer$Vanilla.mapObject(UntypedObjectDeserializer.java:893) ~[jackson-databind-2.11.0.jar:2.11.0]
at com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializer$Vanilla.deserialize(UntypedObjectDeserializer.java:652) ~[jackson-databind-2.11.0.jar:2.11.0]
at com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializer$Vanilla.mapObject(UntypedObjectDeserializer.java:893) ~[jackson-databind-2.11.0.jar:2.11.0]
at com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializer$Vanilla.deserialize(UntypedObjectDeserializer.java:652) ~[jackson-databind-2.11.0.jar:2.11.0]
at com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializer$Vanilla.mapObject(UntypedObjectDeserializer.java:893) ~[jackson-databind-2.11.0.jar:2.11.0]
at com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializer$Vanilla.deserialize(UntypedObjectDeserializer.java:652) ~[jackson-databind-2.11.0.jar:2.11.0]
at com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializer$Vanilla.mapObject(UntypedObjectDeserializer.java:893) ~[jackson-databind-2.11.0.jar:2.11.0]
at com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializer$Vanilla.deserialize(UntypedObjectDeserializer.java:652) ~[jackson-databind-2.11.0.jar:2.11.0]
at com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializer$Vanilla.mapObject(UntypedObjectDeserializer.java:893) ~[jackson-databind-2.11.0.jar:2.11.0]
at com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializer$Vanilla.deserialize(UntypedObjectDeserializer.java:652) ~[jackson-databind-2.11.0.jar:2.11.0]
at com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializer$Vanilla.mapObject(UntypedObjectDeserializer.java:893) ~[jackson-databind-2.11.0.jar:2.11.0]
at com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializer$Vanilla.deserialize(UntypedObjectDeserializer.java:652) ~[jackson-databind-2.11.0.jar:2.11.0]
at com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializer$Vanilla.mapObject(UntypedObjectDeserializer.java:893) ~[jackson-databind-2.11.0.jar:2.11.0]
at com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializer$Vanilla.deserialize(UntypedObjectDeserializer.java:652) ~[jackson-databind-2.11.0.jar:2.11.0]
at com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializer$Vanilla.mapObject(UntypedObjectDeserializer.java:893) ~[jackson-databind-2.11.0.jar:2.11.0]
at com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializer$Vanilla.deserialize(UntypedObjectDeserializer.java:652) ~[jackson-databind-2.11.0.jar:2.11.0]
at com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializer$Vanilla.mapObject(UntypedObjectDeserializer.java:893) ~[jackson-databind-2.11.0.jar:2.11.0]
at com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializer$Vanilla.deserialize(UntypedObjectDeserializer.java:652) ~[jackson-databind-2.11.0.jar:2.11.0]
at com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializer$Vanilla.mapObject(UntypedObjectDeserializer.java:893) ~[jackson-databind-2.11.0.jar:2.11.0]
at com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializer$Vanilla.deserialize(UntypedObjectDeserializer.java:652) ~[jackson-databind-2.11.0.jar:2.11.0]
at com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializer$Vanilla.mapObject(UntypedObjectDeserializer.java:893) ~[jackson-databind-2.11.0.jar:2.11.0]
at com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializer$Vanilla.deserialize(UntypedObjectDeserializer.java:652) ~[jackson-databind-2.11.0.jar:2.11.0]
at com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializer$Vanilla.mapObject(UntypedObjectDeserializer.java:893) ~[jackson-databind-2.11.0.jar:2.11.0]
at com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializer$Vanilla.deserialize(UntypedObjectDeserializer.java:652) ~[jackson-databind-2.11.0.jar:2.11.0]
at com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializer$Vanilla.mapObject(UntypedObjectDeserializer.java:893) ~[jackson-databind-2.11.0.jar:2.11.0]
at com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializer$Vanilla.deserialize(UntypedObjectDeserializer.java:652) ~[jackson-databind-2.11.0.jar:2.11.0]
at com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializer$Vanilla.mapObject(UntypedObjectDeserializer.java:893) ~[jackson-databind-2.11.0.jar:2.11.0]
at com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializer$Vanilla.deserialize(UntypedObjectDeserializer.java:652) ~[jackson-databind-2.11.0.jar:2.11.0]
at com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializer$Vanilla.mapObject(UntypedObjectDeserializer.java:893) ~[jackson-databind-2.11.0.jar:2.11.0]
at com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializer$Vanilla.deserialize(UntypedObjectDeserializer.java:652) ~[jackson-databind-2.11.0.jar:2.11.0]
at com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializer$Vanilla.mapObject(UntypedObjectDeserializer.java:893) ~[jackson-databind-2.11.0.jar:2.11.0]
at com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializer$Vanilla.deserialize(UntypedObjectDeserializer.java:652) ~[jackson-databind-2.11.0.jar:2.11.0]
at com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializer$Vanilla.mapObject(UntypedObjectDeserializer.java:893) ~[jackson-databind-2.11.0.jar:2.11.0]
at com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializer$Vanilla.deserialize(UntypedObjectDeserializer.java:652) ~[jackson-databind-2.11.0.jar:2.11.0]
在Java 7 Struts应用程序客户端上:
17:13:48,498 ERROR [stderr] (http--0.0.0.0-8443-1) Caused by: java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/JsonMappingException$Reference
17:13:48,499 ERROR [stderr] (http--0.0.0.0-8443-1) at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:541)
17:13:48,499 ERROR [stderr] (http--0.0.0.0-8443-1) at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:143)
17:13:48,499 ERROR [stderr] (http--0.0.0.0-8443-1) at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:464)
17:13:48,499 ERROR [stderr] (http--0.0.0.0-8443-1) at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:525)
17:13:48,499 ERROR [stderr] (http--0.0.0.0-8443-1) at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:143)
17:13:48,499 ERROR [stderr] (http--0.0.0.0-8443-1) at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:464)
17:13:48,499 ERROR [stderr] (http--0.0.0.0-8443-1) at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:525)
17:13:48,499 ERROR [stderr] (http--0.0.0.0-8443-1) at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:143)
17:13:48,499 ERROR [stderr] (http--0.0.0.0-8443-1) at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:464)
17:13:48,500 ERROR [stderr] (http--0.0.0.0-8443-1) at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:525)
17:13:48,500 ERROR [stderr] (http--0.0.0.0-8443-1) at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:143)
17:13:48,500 ERROR [stderr] (http--0.0.0.0-8443-1) at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:464)
17:13:48,500 ERROR [stderr] (http--0.0.0.0-8443-1) at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:525)
17:13:48,500 ERROR [stderr] (http--0.0.0.0-8443-1) at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:143)
17:13:48,500 ERROR [stderr] (http--0.0.0.0-8443-1) at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:464)
17:13:48,500 ERROR [stderr] (http--0.0.0.0-8443-1) at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:525)
17:13:48,500 ERROR [stderr] (http--0.0.0.0-8443-1) at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:143)
17:13:48,500 ERROR [stderr] (http--0.0.0.0-8443-1) at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:464)
...
我认为问题在于,当Struts Java 7客户端在JBoss中运行时,类路径与主客户端不同
问题
在JBoss中运行时,如何解决这个问题并成功调用api
我已经尝试过向客户端和服务器添加以下依赖项,这没有什么区别
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.11.1</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.11.1</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.11.1</version>
</dependency>
更多信息:
Java 7 REST客户端:
private static ApprovalResponse callSubmitApprovals(String endpointUrl, ApprovalRequest approvalRequest, String token) {
//System.out.println(endpointUrl);
try {
ClientResource cr = new ClientResource(endpointUrl);
ChallengeResponse challengeResponse = new ChallengeResponse(ChallengeScheme.HTTP_OAUTH_BEARER);
challengeResponse.setRawValue(token);
cr.setChallengeResponse(challengeResponse);
Request req = cr.getRequest();
Series<Header> headerValue = new Series<>(Header.class);
req.getAttributes().put(HeaderConstants.ATTRIBUTE_HEADERS, headerValue);
Representation representation = cr.post(approvalRequest);
String json = representation.getText();
//System.out.println(json);
// now convert the response to java
ObjectMapper objectMapper = new ObjectMapper();
ApprovalResponse approvalResponse = objectMapper.readValue(json, ApprovalResponse.class);
//System.out.println(approvalResponse);
System.out.println(approvalResponse.getApprovalId());
return approvalResponse;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
它在这一行失败了:
Representation representation = cr.post(approvalRequest);
Spring Boot(Java 14)资源:
@RestController
public class ApprovalSubmitResource {
@Autowired
ApprovalSubmitService approvalSubmitService;
@PostMapping(value = "/rest/approvals-submit", consumes=MediaType.APPLICATION_JSON_VALUE, produces={MediaType.APPLICATION_JSON_VALUE, MediaType.APPLICATION_XML_VALUE})
public @ResponseBody ResponseEntity<ApprovalResponse> submit(@RequestHeader(name="Authorization") String token, @RequestBody ApprovalRequest approvalRequest) {
ApprovalResponse approvalResponse = approvalSubmitService.submit(approvalRequest);
approvalResponse.setApprovalId("test id from server");
return ResponseEntity.ok(approvalResponse);
}
}
更多信息:
我发现了问题所在,但不知道如何解决
当我做以下事情时:
Gson gson = new Gson();
String approvalRequestJsonStr = gson.toJson(approvalRequest);
当我运行JBoss时,对于approvalRequest
,将对象转换为JSON时会出现异常
Caused by: java.lang.StackOverflowError
18:40:26,836 ERROR [stderr] (http--0.0.0.0-8443-1) at com.google.gson.stream.JsonWriter.peek(JsonWriter.java:350)
18:40:26,836 ERROR [stderr] (http--0.0.0.0-8443-1) at com.google.gson.stream.JsonWriter.beforeName(JsonWriter.java:565)
18:40:26,836 ERROR [stderr] (http--0.0.0.0-8443-1) at com.google.gson.stream.JsonWriter.writeDeferredName(JsonWriter.java:386)
18:40:26,836 ERROR [stderr] (http--0.0.0.0-8443-1) at com.google.gson.stream.JsonWriter.value(JsonWriter.java:402)
18:40:26,836 ERROR [stderr] (http--0.0.0.0-8443-1) at com.google.gson.internal.bind.TypeAdapters$13.write(TypeAdapters.java:353)
18:40:26,836 ERROR [stderr] (http--0.0.0.0-8443-1) at com.google.gson.internal.bind.TypeAdapters$13.write(TypeAdapters.java:337)
18:40:26,836 ERROR [stderr] (http--0.0.0.0-8443-1) at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.write(TypeAdapterRuntimeTypeWrapper.java:68)
18:40:26,836 ERROR [stderr] (http--0.0.0.0-8443-1) at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.write(ReflectiveTypeAdapterFactory.java:89)
18:40:26,837 ERROR [stderr] (http--0.0.0.0-8443-1) at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.write(ReflectiveTypeAdapterFactory.java:195)
18:40:26,837 ERROR [stderr] (http--0.0.0.0-8443-1) at com.google.gson.internal.bind.ObjectTypeAdapter.write(ObjectTypeAdapter.java:105)
18:40:26,837 ERROR [stderr] (http--0.0.0.0-8443-1) at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.write(TypeAdapterRuntimeTypeWrapper.java:68)
18:40:26,837 ERROR [stderr] (http--0.0.0.0-8443-1) at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.write(CollectionTypeAdapterFactory.java:96)
18:40:26,837 ERROR [stderr] (http--0.0.0.0-8443-1) at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.write(CollectionTypeAdapterFactory.java:60)
18:40:26,837 ERROR [stderr] (http--0.0.0.0-8443-1) at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.write(TypeAdapterRuntimeTypeWrapper.java:68)
18:40:26,837 ERROR [stderr] (http--0.0.0.0-8443-1) at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.write(ReflectiveTypeAdapterFactory.java:89)
...
# 1 楼答案
我解决这个问题的方法不是使用json,而是使用xml作为有效负载:
客户
服务器