On 28/11/2008, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote: > >I suggest you use a wire analyser such as WireShark and see what's > >different between HttpClient and BitKinex > > > You sir are a saint! > > The directory we were PUTting our files to was > http://192.168.4.14/upload/ This was the URI we were using in the > PUTMethod. > > What we should have been using was > http://192.168.4.14/upload/[name_of_resource_we_are_PUTting]
So presumably IIS was complaining that you are not allowed to PUT the directory itself. > I would have noticed this if I looked at the BitKinex log more closely. Likewise, I should have spotted the URL difference. > I saw the error in 10 seconds after getting WireShark up and running. It can be very useful for tracking why one program works and another doesn't. > Thank you! Glad it's sorted - thanks for posting the resolution. > Carlos > > -----Original Message----- > From: sebb [mailto:[EMAIL PROTECTED] > > Sent: Friday, November 28, 2008 3:09 PM > To: HttpClient User Discussion > Subject: Re: PUT to iis is failing > > On 28/11/2008, [EMAIL PROTECTED] <[EMAIL PROTECTED]> > wrote: > > > > Thanks for the reply! > > > > > > >> Please don't post multiple times. > > > > > > Sorry for the double-post. I originally posted via Nabble -- big > > mistake ;) > > > > > > >> Can you upgrade to 3.1? > > > > > > Upgraded and the results were the same. > > > > > > >>You don't show the HttpClient session trace > > > > > > Don't know exactly what you mean by the session trace. The following > is > > the httpclient.wire.header logs: > > > > 0 2008-11-28 14:38:48,114 [main] DEBUG httpclient.wire.header - > >> > > "PUT /upload HTTP/1.1[\r][\n]" > > 30 2008-11-28 14:38:48,144 [main] DEBUG httpclient.wire.header - > >> > > "User-Agent: EDIS3/3.0.0[\r][\n]" > > 30 2008-11-28 14:38:48,144 [main] DEBUG httpclient.wire.header - > >> > > "Accept: */*[\r][\n]" > > 30 2008-11-28 14:38:48,144 [main] DEBUG httpclient.wire.header - > >> > > "Pragma: no-cache[\r][\n]" > > 30 2008-11-28 14:38:48,144 [main] DEBUG httpclient.wire.header - > >> > > "Cache-Control: no-cache[\r][\n]" > > 30 2008-11-28 14:38:48,144 [main] DEBUG httpclient.wire.header - > >> > > "Content-Length: 208[\r][\n]" > > 30 2008-11-28 14:38:48,144 [main] DEBUG httpclient.wire.header - > >> > > "Content-Type: application/octet-stream[\r][\n]" > > 30 2008-11-28 14:38:48,144 [main] DEBUG httpclient.wire.header - > >> > > "Translate: f[\r][\n]" > > 30 2008-11-28 14:38:48,144 [main] DEBUG httpclient.wire.header - > >> > > "Host: 192.168.4.14[\r][\n]" > > 30 2008-11-28 14:38:48,144 [main] DEBUG httpclient.wire.header - > >> > > "[\r][\n]" > > 40 2008-11-28 14:38:48,154 [main] DEBUG httpclient.wire.header - > << > > "HTTP/1.1 403 Forbidden[\r][\n]" > > 40 2008-11-28 14:38:48,154 [main] DEBUG httpclient.wire.header - > << > > "HTTP/1.1 403 Forbidden[\r][\n]" > > 40 2008-11-28 14:38:48,154 [main] DEBUG httpclient.wire.header - > << > > "Connection: close[\r][\n]" > > 50 2008-11-28 14:38:48,164 [main] DEBUG httpclient.wire.header - > << > > "Date: Fri, 28 Nov 2008 19:39:56 GMT[\r][\n]" > > 50 2008-11-28 14:38:48,164 [main] DEBUG httpclient.wire.header - > << > > "Server: Microsoft-IIS/6.0[\r][\n]" > > 50 2008-11-28 14:38:48,164 [main] DEBUG httpclient.wire.header - > << > > "Content-Type: text/html[\r][\n]" > > 50 2008-11-28 14:38:48,164 [main] DEBUG httpclient.wire.header - > << > > "Content-Length: 44[\r][\n]" > > 50 2008-11-28 14:38:48,164 [main] DEBUG httpclient.wire.header - > << > > "[\r][\n]" > > > > OK, so you are not sending cookies or credentials. > > > > > >>You don't show the HttpClient session trace, but an obvious > omission > > >>from the code is any attempt to set a cookie or login or provide > any > > >>other way to authenticate the upload, so it's not surprising that > IIS > > >>complains. > > > > > > At this point IIS server is configured to allow anonymous access. I > > don't provide any credentials via cadaver or BitKinex and they are > both > > successful. However, I am not certain what they are doing underneath > > the hood. > > BitKinex sends a cookie; maybe that is what IIS wants. > Or maybe it does not like the User-Agent. > > I suggest you use a wire analyser such as WireShark and see what's > different between HttpClient and BitKinex. > > > Carlos > > > > > > -----Original Message----- > > From: sebb [mailto:[EMAIL PROTECTED] > > Sent: Friday, November 28, 2008 1:56 PM > > To: HttpClient User Discussion > > Subject: Re: PUT to iis is failing > > > > On 28/11/2008, [EMAIL PROTECTED] > <[EMAIL PROTECTED]> > > wrote: > > > I need to PUT files onto an IIS v6 server. > > > > Please don't post multiple times. > > > > > My attempts to PUT to an IIS fail with a 403 response code. > > > > > > Attempts to PUT the same file to the same IIS URI in cadaver or > > BitKinex > > > are successful. > > > > > > I am using IIS 6. I assume that webDAV is set up properly because > > > cadaver and BitKinex are successful. > > > I am using HTTP-client v 3.0.1 > > > > This is fairly old. > > > > Can you upgrade to 3.1? > > > > > Java 1.5 on windows XP sp2 > > > > > > This is my HTTP put test. > > > > > > @Override > > > protected void setUp() throws Exception { > > > // TODO Auto-generated method stub > > > super.setUp(); > > > client = new HttpClient(); > > > host = "192.168.4.14"; > > > uriString = MessageFormat.format("http://{0}/upload", > host); > > > } > > > > > > public void testHttpClientPut() throws Exception { > > > File pdf = new > > > > > > File("C:\\Temp\\edis3-dev\\cd\\attachments\\1f6135e5-5ec3-435e-82d3-5395 > > > 7e39fc83\\-95097967_-66622204.pdf"); > > > PutMethod method = new PutMethod(uriString); > > > method.setRequestHeader("Host", host); > > > method.setRequestHeader("User-Agent", "EDIS3/3.0.0"); > > > method.setRequestHeader("Accept", "*/*"); > > > method.setRequestHeader("Pragma", "no-cache"); > > > method.setRequestHeader("Cache-Control", "no-cache"); > > > > > > method.setRequestHeader("Content-Length", > > > String.valueOf(pdf.length())); > > > method.setRequestHeader("Content-Type", > > > "application/octet-stream"); > > > method.setRequestHeader("Translate", "f"); > > > > > > InputStreamRequestEntity requestEntity > > > = new InputStreamRequestEntity(new > FileInputStream(pdf)); > > > > > > method.setRequestEntity(requestEntity); > > > > > > executeMethod(method); > > > > > > } > > > > > > private void executeMethod(HttpMethod method) throws > IOException, > > > HttpException { > > > try { > > > Header[] headers = method.getRequestHeaders(); > > > > > > outputHeaders(headers, "REQUEST HEADERS"); > > > > > > int result = client.executeMethod(method); > > > assertTrue("response was: " + result, 200 <= result && > > > result < 300); > > > } finally { > > > method.releaseConnection(); > > > } > > > } > > > > > > Here are the HTTP headers for BitKinex > > > > > > <<< PUT /upload/-95097967_-66622204.pdf HTTP/1.1 > > > <<< Host: 192.168.4.14 > > > <<< User-Agent: BitKinex/3.0.4 > > > <<< Accept: */* > > > <<< Pragma: no-cache > > > <<< Cache-Control: no-cache > > > <<< Cookie: ASPSESSIONIDSATRBDAR=GEHBABIDLOEICKBKHHHNPBHA > > > <<< Content-Length: 208 > > > <<< Content-Type: application/octet-stream > > > <<< Translate: f > > > >>> HTTP/1.1 201 Created > > > >>> Date: Fri, 28 Nov 2008 17:30:40 GMT > > > >>> Server: Microsoft-IIS/6.0 > > > >>> Location: http://192.168.4.14/upload/-95097967_-66622204.pdf > > > >>> Content-Length: 0 > > > >>> Allow: OPTIONS, TRACE, GET, HEAD, DELETE, PUT, COPY, MOVE, > > PROPFIND, > > > PROPPATCH, SEARCH, LOCK, UNLOCK > > > > > > CADAVER SESSION > > > >>>$ cadaver http://192.168.4.14/upload > > > >>>dav:/upload/> PUT another.test.txt > > > >>>Uploading another.test.txt to `/upload/another.test.txt': > > succeeded. > > > >>>dav:/upload/> > > > > > > I can't tell if this is some IIS oddity. When i request the > options > > > from the server PUT is not listed (advertised methods are: > [OPTIONS, > > > TRACE, GET, HEAD, DELETE, COPY, MOVE, PROPFIND, PROPPATCH, SEARCH, > > > MKCOL, LOCK, UNLOCK]). However, when BitKinex has its PUT > > successfully > > > returned the allowed options header does include PUT. > > > > > > Any ideas? > > > > 403 means forbidden > > > > You don't show the HttpClient session trace, but an obvious omission > > from the code is any attempt to set a cookie or login or provide any > > other way to authenticate the upload, so it's not surprising that IIS > > complains. > > > > > Carlos > > > > > > > --------------------------------------------------------------------- > > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > > For additional commands, e-mail: > [EMAIL PROTECTED] > > > > > > > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > > > > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
