1. 程式人生 > >java中httpclient實現digest驗證的請求

java中httpclient實現digest驗證的請求

[java] view plain copy print?
  1. package test.util;  
  2. import java.net.URI;  
  3. import java.util.ArrayList;  
  4. import java.util.List;  
  5. import org.apache.commons.httpclient.auth.AuthPolicy;  
  6. import org.apache.http.HttpResponse;  
  7. import org.apache.http.auth.AuthScope;  
  8. import org.apache.http.auth.Credentials;  
  9. import org.apache.http.auth.UsernamePasswordCredentials;  
  10. import org.apache.http.client.methods.HttpUriRequest;  
  11. import org.apache.http.impl.auth.DigestSchemeFactory;  
  12. import org.apache.http.impl.client.DefaultHttpClient;  
  13. /** 
  14.  * @author Administrator 
  15.  *  
  16.  */
  17. publicclass HTTPDigestClient {  
  18.     private
     URI serverURI = null;  
  19.     String response = null;  
  20.     private DefaultHttpClient httpClient = new DefaultHttpClient();  
  21.     /** 
  22.      * constructor 
  23.      */
  24.     public HTTPDigestClient(String userName, String passWord, String url) {  
  25.         try {  
  26.             serverURI = new URI(url);  
  27.             Credentials creds = new
     UsernamePasswordCredentials(userName,  
  28.                     passWord);  
  29.             httpClient.getCredentialsProvider().setCredentials(  
  30.                     new AuthScope(serverURI.getHost(), serverURI.getPort), (Credentials) creds);  
  31.             httpClient.getParams().setParameter(  
  32.                     AuthPolicy.AUTH_SCHEME_PRIORITY, Collections.singleton(AuthPolicy.DIGEST));  
  33.             httpClient.getAuthSchemes().register(AuthPolicy.DIGEST,  
  34.                     new DigestSchemeFactory());  
  35.         } catch (Exception e) {  
  36.         }  
  37.     }  
  38.     /** 
  39.      * send request to server 
  40.      *  
  41.      * @param httpClient 
  42.      * @param httpUriRequest 
  43.      * @return response HttpResponse 
  44.      */
  45.     public HttpResponse send(HttpUriRequest httpUriRequest) {  
  46.         HttpResponse response = null;  
  47.         try {  
  48.             if (null == httpClient) {  
  49.                 return response;  
  50.             }  
  51.             response = httpClient.execute(httpUriRequest);  
  52.         } catch (Exception e) {  
  53.         }  
  54.         return response;  
  55.     }  
  56. }  
package test.util;

import java.net.URI;
import java.util.ArrayList;
import java.util.List;

import org.apache.commons.httpclient.auth.AuthPolicy;
import org.apache.http.HttpResponse;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.Credentials;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.methods.HttpUriRequest;
import org.apache.http.impl.auth.DigestSchemeFactory;
import org.apache.http.impl.client.DefaultHttpClient;

/**
 * @author Administrator
 * 
 */
public class HTTPDigestClient {
	private URI serverURI = null;
	String response = null;
	private DefaultHttpClient httpClient = new DefaultHttpClient();

	/**
	 * constructor
	 */
	public HTTPDigestClient(String userName, String passWord, String url) {
		try {
			serverURI = new URI(url);
			Credentials creds = new UsernamePasswordCredentials(userName,
					passWord);

			httpClient.getCredentialsProvider().setCredentials(
					new AuthScope(serverURI.getHost(), serverURI.getPort), (Credentials) creds);

			httpClient.getParams().setParameter(
					AuthPolicy.AUTH_SCHEME_PRIORITY, Collections.singleton(AuthPolicy.DIGEST));
			httpClient.getAuthSchemes().register(AuthPolicy.DIGEST,
					new DigestSchemeFactory());

		} catch (Exception e) {
			
		}
	}

	/**
	 * send request to server
	 * 
	 * @param httpClient
	 * @param httpUriRequest
	 * @return response HttpResponse
	 */
	public HttpResponse send(HttpUriRequest httpUriRequest) {
		HttpResponse response = null;
		try {
			if (null == httpClient) {
				
				return response;
			}
			response = httpClient.execute(httpUriRequest);

		} catch (Exception e) {
			
		}
		return response;
	}

}

伺服器端必須加入域

設定realm 為空或者當前域名 測試成功

使用者名稱 密碼用的是域賬戶

下面為basic驗證方式 ,測試通過

[java] view plain copy print?
  1. package test.util;  
  2. import java.net.URI;  
  3. import java.util.Collections;  
  4. import org.apache.commons.httpclient.auth.AuthPolicy;  
  5. import org.apache.http.HttpResponse;  
  6. import org.apache.http.auth.AuthScope;  
  7. import org.apache.http.auth.Credentials;  
  8. import org.apache.http.auth.UsernamePasswordCredentials;  
  9. import org.apache.http.client.CredentialsProvider;  
  10. import org.apache.http.client.methods.HttpUriRequest;  
  11. import org.apache.http.impl.auth.BasicSchemeFactory;  
  12. import org.apache.http.impl.client.DefaultHttpClient;  
  13. /** 
  14.  * @author Administrator 
  15.  *  
  16.  */
  17. publicclass HTTPBasicClient {  
  18.     private URI serverURI = null;  
  19.     String response = null;  
  20.     private DefaultHttpClient httpClient = new DefaultHttpClient();  
  21.     /** 
  22.      * constructor 
  23.      *  
  24.      */
  25.     public HTTPBasicClient(String userName, String passWord, String url) {  
  26.         try {  
  27.             serverURI = new URI(url);  
  28.             UsernamePasswordCredentials creds = new UsernamePasswordCredentials(  
  29.                     userName, passWord);  
  30.             CredentialsProvider credsProvider = httpClient  
  31.                     .getCredentialsProvider();  
  32.             credsProvider.setCredentials(new AuthScope(serverURI.getHost(),  
  33.                     serverURI.getPort()), (Credentials) creds);  
  34.             httpClient.getParams().setParameter(  
  35.                     AuthPolicy.AUTH_SCHEME_PRIORITY,  
  36.                     Collections.singleton(AuthPolicy.BASIC));  
  37.             httpClient.getAuthSchemes().register(AuthPolicy.BASIC,  
  38.                     new BasicSchemeFactory());  
  39.         } catch (Exception e) {  
  40.         }  
  41.     }  
  42.     /** 
  43.      * send request to server 
  44.      *  
  45.      * @param httpClient 
  46.      * @param httpUriRequest 
  47.      * @return response HttpResponse 
  48.      */
  49.     public HttpResponse send(HttpUriRequest httpUriRequest) {  
  50.         HttpResponse response = null;  
  51.         try {  
  52.             if (null == httpClient) {  
  53.                 return response;  
  54.             }  
  55.             response = httpClient.execute(httpUriRequest);  
  56.         } catch (Exception e) {  
  57.         }  
  58.         return response;  
  59.     }  
  60. }