如何使用SpringRESTTemplate调用具有基本身份验证的Restfull web服务

如何使用SpringRESTTemplate调用具有基本身份验证的Restfull web服务,rest,Rest,我正在使用Tomcat7,用于restfull web服务的Sprng框架。我试图使用SpringRESTTemplate调用具有基本身份验证的http web服务 我无法让它工作。根据下面的代码,有谁能告诉我需要做哪些更改才能调用具有基本身份验证的http restfull web服务。。还有谁能告诉我或提供pom.xml文件,我需要哪些java库 import org.springframework.web.client.RestTemplate; import com.fasterxml

我正在使用Tomcat7,用于restfull web服务的Sprng框架。我试图使用SpringRESTTemplate调用具有基本身份验证的http web服务

我无法让它工作。根据下面的代码,有谁能告诉我需要做哪些更改才能调用具有基本身份验证的http restfull web服务。。还有谁能告诉我或提供pom.xml文件,我需要哪些java库

import org.springframework.web.client.RestTemplate;

import com.fasterxml.jackson.core.JsonGenerationException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.journaldev.spring.controller.EmpRestURIConstants;
import com.journaldev.spring.model.CostControlPost;
import com.journaldev.spring.model.Employee;
import com.journaldev.spring.model.RfxForUpdate;

import static org.junit.Assert.*;
import org.apache.commons.codec.binary.Base64;

import javax.net.ssl.*;
import java.io.*;
import java.security.KeyStore;
import java.security.MessageDigest;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;


public class TestExample2 {

    public static final String SERVER_LIST="http://abc/sourcing/testServices";


    @Test
    public void testGetListOfServiceNames()
    {
        try
        {               
            RestTemplate restTemplate = new RestTemplate();
            ResponseEntity<String> response = restTemplate.exchange(SERVER_LIST,HttpMethod.GET,null,String.class);
            assertNotNull(response);    
        }
        catch(Exception e)
        {
            System.out.println("e:"+e.getMessage());
        }
    }                   
 }
导入org.springframework.web.client.restemplate;
导入com.fasterxml.jackson.core.jsongGenerationException;
导入com.fasterxml.jackson.databind.JsonMappingException;
导入com.fasterxml.jackson.databind.ObjectMapper;
导入com.journaldev.spring.controller.empreturictants;
导入com.journaldev.spring.model.CostControlPost;
导入com.journaldev.spring.model.Employee;
导入com.journaldev.spring.model.RfxForUpdate;
导入静态org.junit.Assert.*;
导入org.apache.commons.codec.binary.Base64;
导入javax.net.ssl.*;
导入java.io.*;
导入java.security.KeyStore;
导入java.security.MessageDigest;
导入java.security.cert.CertificateException;
导入java.security.cert.x509证书;
公共类测试示例2{
公共静态最终字符串服务器\u列表=”http://abc/sourcing/testServices";
@试验
public void testGetListOfServiceNames()
{
尝试
{               
RestTemplate RestTemplate=新RestTemplate();
ResponseEntity response=restemplate.exchange(服务器列表,HttpMethod.GET,null,String.class);
assertNotNull(响应);
}
捕获(例外e)
{
System.out.println(“e:+e.getMessage());
}
}                   
}

最简单的形式:

    DefaultHttpClient httpClient = new DefaultHttpClient();
    BasicCredentialsProvider credentialsProvider =  new BasicCredentialsProvider();
    credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(user, password);
    httpClient.setCredentialsProvider(credentialsProvider);
    ClientHttpRequestFactory rf = new HttpComponentsClientHttpRequestFactory(httpClient);

    template = new RestTemplate(rf);
Spring自动管理:

    DefaultHttpClient httpClient = new DefaultHttpClient();
    BasicCredentialsProvider credentialsProvider =  new BasicCredentialsProvider();
    credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(user, password);
    httpClient.setCredentialsProvider(credentialsProvider);
    ClientHttpRequestFactory rf = new HttpComponentsClientHttpRequestFactory(httpClient);

    template = new RestTemplate(rf);
为RestTemplate创建HTTP上下文:

 private HttpContext createHttpContext() {
        AuthCache authCache = new BasicAuthCache();

        BasicScheme basicAuth = new BasicScheme();
        authCache.put(host, basicAuth);

        BasicHttpContext localcontext = new BasicHttpContext();
        localcontext.setAttribute(HttpClientContext.AUTH_CACHE, authCache);
        return localcontext;
    }
添加拦截器:

restTemplate.getInterceptors().add(
  new BasicAuthorizationInterceptor("username", "password"));
电话:

参考帖子