从 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)

提问人:fady okana 提问时间:11/16/2023 最后编辑:fady okana 更新时间:11/17/2023 访问量:25

问:

我使用 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的情况,一切都有效

json spring java-ee-6 weblogic-10.x openfeign

评论


答:

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);它会接受一个对象,而它需要一个列表吗?