2017-08-02 52 views
1

请对另一个项目的呼叫我想应用A连接到应用B: 应用B网址是:通过调用到控制器通过@RequestMapping网址

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

这两个应用都是我们开发尚未考虑整合到一个。

可以做到这一点吗?我们正在使用spring和Java8,并且我对我应该开始的东西感到困惑。应用程序B在调用Controller的URL之前还需要进行身份验证。

更新: 应用程序A的配置与应用程序B相同,在将数据保存到数据库后,我们需要调用应用程序B来处理这些数据(代码位于应用程序B中)。基本上,在应用程序A过程结束时,我们需要启动其中一个应用程序B过程。

+1

向我们提供的'应用A'细节 – sunkuet02

回答

2

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

在最基层的应用答:

@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(); 
    } 
} 
+0

非常感谢,它的工作完美! – ttdol2506