如何使用SpringRESTTemplate调用具有基本身份验证的Restfull web服务
我正在使用Tomcat7,用于restfull web服务的Sprng框架。我试图使用SpringRESTTemplate调用具有基本身份验证的http web服务 我无法让它工作。根据下面的代码,有谁能告诉我需要做哪些更改才能调用具有基本身份验证的http restfull web服务。。还有谁能告诉我或提供pom.xml文件,我需要哪些java库如何使用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
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"));
电话:
参考帖子