提问人:fady okana 提问时间:11/16/2023 最后编辑:fady okana 更新时间:11/17/2023 访问量:25
从 Spring 应用程序在 weblogic 上使用 jee deployer Web 服务时出现问题(json 格式的错误请求 400 链接)
Problem when consuming a jee deployer web service on weblogic from a Spring application (Bad request 400 link in json format)
问:
我使用 openFeign 通过发送带有对象列表作为参数的 Post 请求来攻击 Web,不幸的是,目标 Web 服务不理解我发送的 json 格式,因为它需要格式略有不同的 json。查看代码:
@FeignClient(name = "clientfeign",url = "http://192.168.x.x:8080")
public interface SIPAERestClient {
@PostMapping(path = "/api/method-adresse")
List<TEbourse> checkFonctionnaire(@RequestBody List<TEbourse> demandes);
}
目标:
@Data
@AllArgsConstructor
@NoArgsConstructor
public class TEbourse {
private int id;
private String nom;
private String prenom;
private String sexe;
private String date_naissance;
private String lieu_naissance;
private String matricule;
private String statut;
}
格式化 JSON envoyer:
[
{
"ID": "12",
"date_naissance": "08/01/84",
"lieu_naissance": "",
"matricule": "",
"nom": "XXXX",
"prenom": "XXXX XX",
"sexe": "M",
"statut": ""
},
{
"ID": "20",
"date_naissance": "02/10/98",
"lieu_naissance": "",
"matricule": "",
"nom": "XXXX",
"prenom": "XXXX XX",
"sexe": "M",
"statut": ""
},
{
"ID": "152",
"date_naissance": "27/03/94",
"lieu_naissance": "",
"matricule": "",
"nom": "XXXX",
"prenom": "XXXX XX",
"sexe": "M",
"statut": ""
}
]
另一方面,部署在 webLogic 上的 Web 服务需要一个 json 格式,前面有一个键,而这个 doe 在 webLogic 上部署时,它与 openFeigns 发送的格式相同:
{ "tEbourse":[
{
"date_naissance": "08/01/84",
"ID": "12",
"lieu_naissance": "",
"matricule": "",
"nom": "XXXX",
"prenom": "XXXX XX",
"sexe": "M",
"statut": ""
},
{
"date_naissance": "02/10/98",
"ID": "20",
"lieu_naissance": "",
"matricule": "",
"nom": "XXXX",
"prenom": "XXXX XX",
"sexe": "M",
"statut": ""
},
{
"date_naissance": "27/03/94",
"ID": "152",
"lieu_naissance": "",
"matricule": "",
"nom": "XXXX",
"prenom": "XXXX XX",
"sexe": "M",
"statut": ""
}
]}
您如何看待这个问题?
如何使用 OpenFeign 使用 Spring 中的类似 JSON 发送请求。
注意:这个问题只在webLogic上部署时出现,但对于wildfly的情况,一切都有效
答:
0赞
seenukarthi
11/16/2023
#1
如果你需要与 openFeigns 相同的格式,你需要一个包装类来为你的类。TEbourse
它应该如下所示。
@Data
@AllArgsConstructor
@NoArgsConstructor
public class TEbourseWrapper {
private List<TEbourse> tEbourse;
}
在你做如下的事情。SIPAERestClient
@FeignClient(name = "clientfeign",url = "http://192.168.x.x:8080")
public interface SIPAERestClient {
@PostMapping(path = "/api/method-adresse")
TEbourseWrapper checkFonctionnaire(@RequestBody TEbourseWrapper demandes);
}
评论
0赞
fady okana
11/16/2023
Web 服务方法需要一个输入列表和一个输出列表,例如: List<TEBourse> checkData(List<TEBourse> requests);它会接受一个对象,而它需要一个列表吗?
评论