알아 냈습니다.
궁극적 인 목표는 WebSphere Application Server v8.0으로 포팅 할 수있는 간단한 테스트 케이스를 만드는 것이 었습니다. Apache Wink 클라이언트는 자체적으로 NTLM 인증을 처리 할 수 없습니다. NTLM 인증을 처리하려면 별도의 Http 클라이언트를 사용해야합니다. 그 버기 버전은 WAS v8.0에 패키지되어 있기 때문에 나는 Apache Http Cient v4.0.1을 선택했다. 제공된 버전을 무시하는 것은 큰 고통입니다. 이것이 내가 더 최근의 Apache HttpClient 버전을 선택하지 않은 이유입니다. 다음 종속성을 사용하여 ... 내가 com.ibm.ws.prereq.jaxrs을 사용하고
<dependency>
<groupId>jcifs</groupId>
<artifactId>jcifs</artifactId>
<version>1.3.17</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.apache.wink</groupId>
<artifactId>wink-client</artifactId>
<version>1.4</version>
</dependency>
: 아파치 HTTP 클라이언트 v4.0.1는 NTLM 인증을 처리하기 위해 얼마나
그래서, 여기. jar는 Apache Http Client v4.0.1을 얻기 위해 WAS v8.0에 포함되어 있습니다. 그건 내 Maven repo에 설치되어 있고, 나는 Http Client v4.0.1을 얻는 의존성으로 지정했다.
here 단계를 따르십시오.
이제, 윙크는 활동하기 시작 : 이제
public int attemptWinkHttpClienGET() {
ClientResponse response = null;
try {
String spUri = "https://some-sharepoint-url/listdata.svc/";
StringBuilder sb = new StringBuilder();
sb.append(spUri).append("UserInformationList").toString();
DefaultHttpClient httpClient = new DefaultHttpClient();
httpClient.getAuthSchemes().register("ntlm",new JCIFSNTLMSchemeFactory());
CredentialsProvider credsProvider = new BasicCredentialsProvider();
NTCredentials ntcred = new NTCredentials("username_here", "password_here", InetAddress.getLocalHost().getHostName(), "domain_here");
credsProvider.setCredentials(new AuthScope("base_url_here_sans_https://", 443, AuthScope.ANY_REALM, "NTLM"), ntcred);
httpClient.setCredentialsProvider(credsProvider);
org.apache.wink.client.ClientConfig httpClientConfig = new org.apache.wink.client.ApacheHttpClientConfig(httpClient);
Application app = new Application() {
public Set<Class<?>> getClasses() {
Set<Class<?>> classes = new HashSet<Class<?>>();
classes.add(WinkMOXyJsonProvider.class);
return classes;
}
};
httpClientConfig.applications(app);
RestClient client = new RestClient(httpClientConfig);
Resource resource = client.resource(sb.toString());
response = resource.accept(MediaType.APPLICATION_JSON_TYPE).get();
UserInformationListResponse blah = response.getEntity(UserInformationListResponse.class);
Results[] results = blah.getD().getResults();
for (Results result : results) {
System.out.println("User Name: " + result.getFirstName() + " " + result.getLastName());
}
System.out.println("The response is " + response.getStatusCode());
response.consumeContent();
} catch (UnknownHostException ex) {
Logger.getLogger(HttpTest.class.getName()).log(Level.SEVERE, null, ex);
}
return response.getStatusCode();
}
, 최종 비트. MOXy를 JAXB 구현으로 사용한다. 내 애플 리케이션 변수에 등록 했는데도 문제가있다. 잭슨과 관련된 몇 가지 오류가 발생했습니다. Apache HttpClient v4.0.1은 분명히 후드 아래의 Jackons를 기본값으로 사용하고 있습니다. 그 문제를 극복하기 위해 내가 한 일이 바로 여기에 있습니다.
나는 다음과 같은 종속성을 추가 :
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-moxy</artifactId>
<version>2.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.4.0-rc2</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-jaxrs</artifactId>
<version>1.9.13</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-xc</artifactId>
<version>1.9.13</version>
</dependency>
여기 WinkMOXyJsonProvider.java
import javax.ws.rs.Consumes;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.ext.Provider;
import org.eclipse.persistence.jaxb.rs.MOXyJsonProvider;
@Provider
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public class WinkMOXyJsonProvider extends MOXyJsonProvider {
}
의 난 결과는 문자열 셰어에서 반환 된 다음 목시 POJO의이 JSON 객체 계층 구조를 모방 한 무리를 만들어 관찰했다.
OS X에서 Apache HttpClient v4.0.1을 사용하여 NTLM 인증을 사용하기 위해 GET 요청을 받았습니다.이 링크를 따라갔습니다 : http://zhangyelei.blogspot.com/2014/03/httpclient-version-conflict -on-was.html. 이는 HttpClient 버전이 WAS v8.0 및 v8.5에서 사용되므로 중요한 첫 번째 단계입니다. 이 버전을 덮어 쓰려면 격리 공유 라이브러리와 같이 어리석은 조치를 취해야합니다. 그것은 나의 경우와 마찬가지로 일부에게는 실현 불가능할 수도 있습니다. 이제 Apache HttpClient v4.0.1을 Apache Wink와 함께 사용하는 방법을 알아야합니다. –