通过@RequestMapping网址

时间:2017-08-02 06:58:25

标签: java spring connection

我想通过调用Controller将app A连接到app B: 应用B网址为:

@RequestMapping(value = "/v/getInfo")
public ResponseEntity<String> getVInfo() {
    vService.getInfo();
    return new ResponseEntity<>("Success", HttpStatus.OK);
}

这两个应用程序都是由我们开发的,尚未考虑将它们集成在一个应用程序中。

有可能这样做吗?我们正在使用spring和Java8,我对应该从什么开始感到困惑。在从Controller调用URL之前,应用B还需要进行身份验证。

更新: App A的配置与App B相同,在将数据保存到数据库后,我们需要调用App B来操作这些数据(代码在App B中)。基本上在App A流程结束时,我们需要启动一个App B流程。

1 个答案:

答案 0 :(得分:2)

您只需使用标准RestTemplate进行正常的网络通话。

在应用程序A的最基本级别:

@Component
public class AppBCaller {

  @Autowired RestTemplate template;

  public String getInfo() {
    String plainCreds = "username:password";
    byte[] plainCredsBytes = plainCreds.getBytes();
    byte[] base64CredsBytes = Base64.encodeBase64(plainCredsBytes);
    String base64Creds = new String(base64CredsBytes);

    HttpHeaders headers = new HttpHeaders();
    headers.add("Authorization", "Basic " + base64Creds);

    HttpEntity<String> request = new HttpEntity<String>(headers);
    ResponseEntity<String> response = restTemplate.exchange("http://whereAppBis/v/getInfo", HttpMethod.GET, request, String.class);
    return response.getBody();
  }
}