Hi Guillaume, Thanks for the patch!
I haven't used this task myself and haven't tested to see if your change works, however I've applied the patch ;-) It's a fairly simple isolated change though so fingers crossed it's all okay :-) Cheers, Brett On Tue, Apr 19, 2011 at 9:44 PM, Guillaume Rischard <[email protected] > wrote: > Hi everyone, > > The --upload-xml-change feature can't log into the API server. The problem > seems to come from the conversion of the username:password to Base64. > > When running > > osmosis -v 9 --rxc file="yourOsmChange.osm" --upload-xml-change user=you > password=secret > > , instead of uploading the changes, osmosis sends an incorrect > username:password string and receives a 401 Authentication required error. > > When comparing osmosis and wget tcpdumps, I see that the http credentials > they send are different. Wget's credentials string base64-decodes back to my > username:password, while osmosis's string doesn't at all. > > The problem comes from the base64 conversion that is being done by the > apache common codecs library. httpCon.setRequestProperty() expects a String, > but gets a byte[] back from encodeBase64. This patch calls > encodeBase64String which returns a String instead. > > I wonder whether there's something I'm missing. How could it even work in > the first place? I haven't been able to compile osmosis (the unit tests fail > without a database), but encodeBase64String produces right-looking > credentials for me in test code. > > What do you think? > > Cheers, > > Guillaume > > Index: xml/src/org/openstreetmap/osmosis/xml/v0_6/XmlChangeUploader.java > =================================================================== > --- xml/src/org/openstreetmap/osmosis/xml/v0_6/XmlChangeUploader.java > (revision 25864) > +++ xml/src/org/openstreetmap/osmosis/xml/v0_6/XmlChangeUploader.java > (working copy) > @@ -125,7 +125,7 @@ > // we do not use Authenticator.setDefault() > // here to stay thread-safe. > httpCon.setRequestProperty("Authorization", "Basic " > - + Base64.encodeBase64( > + + Base64.encodeBase64String( > (this.myUserName + ":" > + this.myPassword).getBytes("UTF8"))); > > @@ -207,7 +207,7 @@ > > // we do not use Authenticator.setDefault() here to stay > thread-safe. > httpCon.setRequestProperty("Authorization", "Basic " > - + Base64.encodeBase64( > + + Base64.encodeBase64String( > (this.myUserName + ":" > + this.myPassword).getBytes("UTF8"))); > > @@ -251,7 +251,7 @@ > > // we do not use Authenticator.setDefault() here to stay > thread-safe. > httpCon.setRequestProperty("Authorization", "Basic " > - + Base64.encodeBase64( > + + Base64.encodeBase64String( > (this.myUserName + ":" > + this.myPassword).getBytes("UTF8"))); > > > > _______________________________________________ > osmosis-dev mailing list > [email protected] > http://lists.openstreetmap.org/listinfo/osmosis-dev >
_______________________________________________ osmosis-dev mailing list [email protected] http://lists.openstreetmap.org/listinfo/osmosis-dev
