hc-httpclient-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From sebb <seb...@gmail.com>
Subject Re: PUT to iis is failing
Date Sat, 29 Nov 2008 02:30:25 GMT
On 28/11/2008, Carlos.Fernandez@usitc.gov <Carlos.Fernandez@usitc.gov> 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:sebbaz@gmail.com]
>
> Sent: Friday, November 28, 2008 3:09 PM
>  To: HttpClient User Discussion
>  Subject: Re: PUT to iis is failing
>
>  On 28/11/2008, Carlos.Fernandez@usitc.gov <Carlos.Fernandez@usitc.gov>
>  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:sebbaz@gmail.com]
>  >  Sent: Friday, November 28, 2008 1:56 PM
>  >  To: HttpClient User Discussion
>  >  Subject: Re: PUT to iis is failing
>  >
>  >  On 28/11/2008, Carlos.Fernandez@usitc.gov
>  <Carlos.Fernandez@usitc.gov>
>  >  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: httpclient-users-unsubscribe@hc.apache.org
>  >  >  For additional commands, e-mail:
>  httpclient-users-help@hc.apache.org
>  >  >
>  >  >
>  >
>  >  ---------------------------------------------------------------------
>  >  To unsubscribe, e-mail: httpclient-users-unsubscribe@hc.apache.org
>  >  For additional commands, e-mail: httpclient-users-help@hc.apache.org
>  >
>  >
>  >
>  >
>  >  ---------------------------------------------------------------------
>  >  To unsubscribe, e-mail: httpclient-users-unsubscribe@hc.apache.org
>  >  For additional commands, e-mail: httpclient-users-help@hc.apache.org
>  >
>  >
>
>  ---------------------------------------------------------------------
>  To unsubscribe, e-mail: httpclient-users-unsubscribe@hc.apache.org
>  For additional commands, e-mail: httpclient-users-help@hc.apache.org
>
>
>
>
>  ---------------------------------------------------------------------
>  To unsubscribe, e-mail: httpclient-users-unsubscribe@hc.apache.org
>  For additional commands, e-mail: httpclient-users-help@hc.apache.org
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: httpclient-users-unsubscribe@hc.apache.org
For additional commands, e-mail: httpclient-users-help@hc.apache.org


Mime
View raw message