Zhaohua, I am glad I was of some help.
Please refer to this resource for details regarding the official venues for contributions to the Apache Software Foundation: http://www.apache.org/foundation/contributing.html If you want to contribute code to the Jakarta HttpClient project, you are very welcome to subscribe to the httpclient-dev list and discuss the best ways to help with the HttpClient development on that list Cheers, Oleg On Thu, Aug 04, 2005 at 10:10:53AM -0400, Zhaohua Meng wrote: > Oleg, > > Thanks for the prompt response. I followed your suggestion and it worked. > Many thanks to you and others who developed such an excellent product. > Can you direct me to where I can donate some money? I'd like to contribute > some code in the future as well. > > Zhaohua > > > > "Oleg Kalnichevski" <[EMAIL PROTECTED]> > 08/03/2005 06:08 PM > Please respond to > "Jakarta Commons Users List" <[email protected]> > > > To > "Jakarta Commons Users List" <[email protected]> > cc > > Subject > Re: httpclient running in a loop: the code > > > > > > > Zhaohua, > > It is all very simple. The MyCredentialsProvider class of yours always > returns the same credentials, which causes HttpClient to produce the > same authentication response over and over again. HttpClient makes no > provisions to check whether the same credentials have not been tried > already. It is the responsibility of the custom CredentialsProvider to > ensure that the same credentials are not used multiple times for the > same authentication scope (that is, the same scheme, realm, host, and > port). > > I do admit this may not be obvious and the javadocs do not reflect this > assumption. I'll make sure the javasocs get updated > > If you not intend to prompt the user for a new set of credentials [1], > or retrieve it from elsewhere, you should simply add the credentials to > the HTTP state and HttpClient will make sure the same credentials are > not tried multiple times. > > httpclient.getState().setCredentials( > new AuthScope("driman8.cgsh.com", 80, "cgsh.com"), > new UsernamePasswordCredentials("myusername", "mypassword")); > > Hope this helps > > Oleg > [1] > http://svn.apache.org/viewcvs.cgi/jakarta/commons/proper/httpclient/trunk/src/examples/InteractiveAuthenticationExample.java?view=markup > > > On Wed, 2005-08-03 at 15:36 -0400, Zhaohua Meng wrote: > > Sorry I have to split this mail in 2 since apache.org mail server wont' > > allow large messages. > > The code: > > > > import java.io.File; > > import java.io.FileInputStream; > > import java.io.IOException; > > import java.security.Security; > > import java.util.ArrayList; > > import java.util.List; > > > > import javax.xml.parsers.ParserConfigurationException; > > > > import org.apache.commons.httpclient.Credentials; > > import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler; > > import org.apache.commons.httpclient.Header; > > import org.apache.commons.httpclient.HttpClient; > > import org.apache.commons.httpclient.HttpException; > > import org.apache.commons.httpclient.HttpVersion; > > import org.apache.commons.httpclient.NTCredentials; > > import org.apache.commons.httpclient.UsernamePasswordCredentials; > > import org.apache.commons.httpclient.auth.AuthPolicy; > > import org.apache.commons.httpclient.auth.AuthScheme; > > import org.apache.commons.httpclient.auth.AuthScope; > > import > > org.apache.commons.httpclient.auth.CredentialsNotAvailableException; > > import org.apache.commons.httpclient.auth.CredentialsProvider; > > import org.apache.commons.httpclient.cookie.CookiePolicy; > > import org.apache.commons.httpclient.methods.GetMethod; > > import org.apache.commons.httpclient.methods.InputStreamRequestEntity; > > import org.apache.commons.httpclient.methods.PostMethod; > > import org.apache.commons.httpclient.methods.StringRequestEntity; > > import org.apache.commons.httpclient.params.HttpMethodParams; > > > > /** > > * > > * This is a sample application that demonstrates > > * how to use the Jakarta HttpClient API. > > * > > * This application sends an XML document > > * to a remote web server using HTTP POST > > * > > * @author Sean C. Sullivan > > * @author Ortwin Gl?ck > > * @author Oleg Kalnichevski > > */ > > public class PostXML { > > private Object password; > > > > /** > > * > > * Usage: > > * java PostXML http://mywebserver:80/ c:\foo.xml > > * > > * @param args command line arguments > > * Argument 0 is a URL to a web server > > * Argument 1 is a local filename > > * > > */ > > public static void main(String[] args) throws Exception { > > System.setProperty("org.apache.commons.logging.Log", > > "org.apache.commons.logging.impl.SimpleLog"); > > System.setProperty( > > "org.apache.commons.logging.simplelog.showdatetime", "true"); > > System.setProperty( > > "org.apache.commons.logging.simplelog.log.httpclient.wire", "debug"); > > System.setProperty( > > > "org.apache.commons.logging.simplelog.log.org.apache.commons.httpclient", > > "debug"); > > postWithSupportedAuth(); > > } > > public static void postWithSupportedAuth() throws IOException, > > HttpException, IllegalAccessException, InstantiationException, > > ClassNotFoundException, ParserConfigurationException { > > String secProviderName = "com.sun.crypto.provider.SunJCE"; > > java.security.Provider secProvider = > > (java.security.Provider)Class.forName(secProviderName).newInstance(); > > Security.addProvider(secProvider); > > String strURL = " > > http://driman8.cgsh.com/worksite/services/factory.asmx"; > > String strXMLFilename = "C:/project/junk/Test/Java > > Source/request.xml"; > > String requestDoc = > > ImanageCreateWorkspaceSOAP.getTestDoc(); > > // Prepare HTTP post > > PostMethod post = new PostMethod(strURL); > > post.setRequestEntity(new StringRequestEntity(requestDoc, > > "text/xml; charset=UTF-8","UTF-8")); > > post.setRequestHeader("Content-type", "text/xml; > charset=UTF-8"); > > post.setRequestHeader("SOAPAction", > > "\"http://worksite.imanage.com/CreateWorkspace\ > "" > > ); > > HttpClient httpclient = new HttpClient(); > > post.getParams().setVersion(HttpVersion.HTTP_1_1); > > httpclient.getParams().setParameter(CredentialsProvider.PROVIDER, > > new PostXML.MyCredentialsProvider()); > > try { > > int result = httpclient.executeMethod(post); > > System.out.println("Response status code: " + result); > > System.out.println("Response body: "); > > } finally { > > post.releaseConnection(); > > } > > } > > public static void getWithBasicAuth(String url, String username, > > String password, String host, int port, String domain) throws > > HttpException, IOException { > > //http://www.developer.ibm.com/partnerworld/mem/index.html > > GetMethod get = new GetMethod(url); > > HttpClient httpclient = new HttpClient(); > > httpclient.getState().setCredentials( > > new AuthScope(host, port,domain), new > > NTCredentials(username,password,host,domain)); > > int result = httpclient.executeMethod(get); > > // Display status code > > System.out.println("Response status code: " + result); > > // Display response > > System.out.println("Response body: "); > > System.out.println(get.getResponseBodyAsString()); > > > > > > } > > public static class MyCredentialsProvider implements > > CredentialsProvider { > > > > /** > > * @see > > > org.apache.commons.httpclient.auth.CredentialsProvider#getCredentials(AuthScheme, > > > > String, int, boolean) > > */ > > public Credentials getCredentials( > > AuthScheme scheme, > > String host, > > int port, > > boolean proxy) > > throws CredentialsNotAvailableException { > > return new UsernamePasswordCredentials( > > "myusername","mypassword"); > > } > > > > } > > } > > > > This message is being sent from a law firm and may contain confidential > or privileged information. If you are not the intended recipient, please > advise the sender immediately by reply e-mail and delete this message and > any attachments without retaining a copy. > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > > > > This message is being sent from a law firm and may contain confidential or > privileged information. If you are not the intended recipient, please advise > the sender immediately by reply e-mail and delete this message and any > attachments without retaining a copy. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
