RESTEasy client framework authentication credentials

匿名 (未验证) 提交于 2019-12-03 01:55:01

问题:

RESTEasy (a JAX-RS implementation) has a nice client framework, eg:

ServiceApi client = ProxyFactory.create(ServiceApi.class, baseUri); 

How do you provide HTTP authentication credentials to this client?

回答1:

jnorris's answer uses some deprecated classes. Here is an updated way that uses non-deprecated classes.

    import org.apache.http.HttpStatus;     import org.apache.http.auth.Credentials;     import org.apache.http.auth.UsernamePasswordCredentials;     import org.apache.http.impl.client.DefaultHttpClient;     ...     DefaultHttpClient httpClient = new DefaultHttpClient();      Credentials credentials = new UsernamePasswordCredentials(userName,             password);     httpClient.getCredentialsProvider().setCredentials(             org.apache.http.auth.AuthScope.ANY, credentials);      ClientExecutor clientExecutor = new ApacheHttpClient4Executor(             httpClient);     proxy = ProxyFactory             .create(UserAccessProxy.class, host, clientExecutor); 


回答2:

Credentials can be provided by using ClientExecutor.

   Credentials credentials = new UsernamePasswordCredentials(userId, password);    HttpClient httpClient = new HttpClient();    httpClient.getState().setCredentials(AuthScope.ANY, credentials);    httpClient.getParams().setAuthenticationPreemptive(true);     ClientExecutor clientExecutor = new ApacheHttpClientExecutor(httpClient);     ServiceApi client = ProxyFactory.create(ServiceApi.class, baseUri, clientExecutor); 


回答3:

Maybe something like this (with RestEasy 2.3.1) :

//(...imports...) import org.apache.http.auth.AuthScope; import org.apache.http.auth.UsernamePasswordCredentials; import org.apache.http.impl.client.DefaultHttpClient; import org.jboss.resteasy.client.ClientRequest; import org.jboss.resteasy.client.ClientResponse; import org.jboss.resteasy.client.core.executors.ApacheHttpClient4Executor;  //(...code...) private static final String ENDPOINT = "the_rest_endpoint_here";  String username = ""; String password = "";  DefaultHttpClient client = new DefaultHttpClient(); client.getCredentialsProvider().setCredentials(AuthScope.ANY,                         new UsernamePasswordCredentials(username, password)); ApacheHttpClient4Executor executer = new ApacheHttpClient4Executor(client);  ClientRequest req = new ClientRequest(ENDPOINT, executer);  ClientResponse res = req.get(String.class); System.out.println(res.getEntity()); res.close(); 

...or with RestEasy 3.0.18

//(...imports...) import javax.ws.rs.core.Response; import org.jboss.resteasy.client.jaxrs.BasicAuthentication; import org.jboss.resteasy.client.jaxrs.ResteasyClient; import org.jboss.resteasy.client.jaxrs.ResteasyClientBuilder; import org.jboss.resteasy.client.jaxrs.ResteasyWebTarget;  //(...code...) private static final String ENDPOINT = "the_rest_endpoint_here";  String usertoken = ""; String password = "";  //with proxy(comment this if not using) ResteasyClient client = new ResteasyClientBuilder()             .defaultProxy("my_proxy", 8080, "http")             .build();  ResteasyWebTarget target = client.target(ENDPOINT); target.register(new BasicAuthentication(usertoken, password));  Response response = target.request().get(); System.out.println(response.readEntity(String.class)); response.close(); 


易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!