[jira] Commented: (HTTPCORE-137) Problem handling HTTP PUT requests

2008-01-09 Thread Ronald E Johnson (JIRA)

[ 
https://issues.apache.org/jira/browse/HTTPCORE-137?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12557427#action_12557427
 ] 

Ronald E Johnson commented on HTTPCORE-137:
---

Actually after going through the HttpComponents core code base, it looks like 
the PUT requests are never handled.  In the file 
module-main/src/main/java/org/apache/http/impl/DefaultHttpRequestFactory.java 
the source code looks like:

public HttpRequest newHttpRequest(final RequestLine requestline)
throws MethodNotSupportedException {
if (requestline == null) {
throw new IllegalArgumentException("Request line may not be null");
}
String method = requestline.getMethod();
if ("GET".equalsIgnoreCase(method)) {
return new BasicHttpRequest(requestline); 
} else if ("HEAD".equalsIgnoreCase(method)) {
return new BasicHttpRequest(requestline); 
} else if ("POST".equalsIgnoreCase(method)) {
return new BasicHttpEntityEnclosingRequest(requestline); 
} else { 
throw new MethodNotSupportedException(method +  " method not 
supported");
}
}

Notice that "PUT" is never handled.  Which is why I've been getting a "501 
method not supported" message.  After changing the code to:

public HttpRequest newHttpRequest(final RequestLine requestline)
throws MethodNotSupportedException {
if (requestline == null) {
throw new IllegalArgumentException("Request line may not be null");
}
String method = requestline.getMethod();
if ("GET".equalsIgnoreCase(method)) {
return new BasicHttpRequest(requestline); 
} else if ("HEAD".equalsIgnoreCase(method)) {
return new BasicHttpRequest(requestline); 
} else if ("PUT".equalsIgnoreCase(method)) {
return new BasicHttpEntityEnclosingRequest(requestline); 
} else if ("POST".equalsIgnoreCase(method)) {
return new BasicHttpEntityEnclosingRequest(requestline); 
} else { 
throw new MethodNotSupportedException(method +  " method not 
supported");
}
}

I was able to process the PUT request...  Thanks for your patience.  I will 
update the test code and provided the modified DefaultHttpRequestFactory.java 
file.

> Problem handling HTTP PUT requests 
> ---
>
> Key: HTTPCORE-137
> URL: https://issues.apache.org/jira/browse/HTTPCORE-137
> Project: HttpComponents Core
>  Issue Type: Bug
>  Components: HttpCore NIO
>Affects Versions: 4.0-rc1
> Environment: Java JDK 1.6.0_03 on Windows XP Service Pack 2
>Reporter: Ronald E Johnson
>
> I have a Java Swing application with an HttpServer() instance running in a 
> SwingWorker thread.  I'm able to get at the HTTP GET requests by casting the 
> request as follows:
> if (request instanceof HttpEntityEnclosingRequest)  {
> HttpEntity entity = ((HttpEntityEnclosingRequest) 
> request).getEntity();
> byte[] entityContent = EntityUtils.toByteArray(entity);
> logger.info("Incoming entity content (bytes): " + 
> entityContent.length);
> }
> However this does not work for PUT requests. In fact printing out the request 
> line of a PUT request appears as: "HEAD /test.txt HTTP/1.1", and I don't see 
> PUT in the request line at all.  Attempting to cast this as an 
> HttpEntityEnclosingRequest fails, and thus I'm not able to get at the 
> HttpEntity.  Is this functionality supported?  

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



[jira] Commented: (HTTPCORE-137) Problem handling HTTP PUT requests

2008-01-09 Thread Roland Weber (JIRA)

[ 
https://issues.apache.org/jira/browse/HTTPCORE-137?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12557309#action_12557309
 ] 

Roland Weber commented on HTTPCORE-137:
---

Are you sending a message entity in response to the HEAD request?
Then the client probably chokes on this gross violation of the HTTP 
specification.
Try a "501 not implemented" response, or "404 not found".
Without an entity, of course.

You may also consider to send your questions to the dev@ list.
An issue tracker is not a discussion forum.

cheers,
  Roland


> Problem handling HTTP PUT requests 
> ---
>
> Key: HTTPCORE-137
> URL: https://issues.apache.org/jira/browse/HTTPCORE-137
> Project: HttpComponents Core
>  Issue Type: Bug
>  Components: HttpCore NIO
>Affects Versions: 4.0-rc1
> Environment: Java JDK 1.6.0_03 on Windows XP Service Pack 2
>Reporter: Ronald E Johnson
> Attachments: TestHTTPServer.java
>
>
> I have a Java Swing application with an HttpServer() instance running in a 
> SwingWorker thread.  I'm able to get at the HTTP GET requests by casting the 
> request as follows:
> if (request instanceof HttpEntityEnclosingRequest)  {
> HttpEntity entity = ((HttpEntityEnclosingRequest) 
> request).getEntity();
> byte[] entityContent = EntityUtils.toByteArray(entity);
> logger.info("Incoming entity content (bytes): " + 
> entityContent.length);
> }
> However this does not work for PUT requests. In fact printing out the request 
> line of a PUT request appears as: "HEAD /test.txt HTTP/1.1", and I don't see 
> PUT in the request line at all.  Attempting to cast this as an 
> HttpEntityEnclosingRequest fails, and thus I'm not able to get at the 
> HttpEntity.  Is this functionality supported?  

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



[jira] Commented: (HTTPCORE-137) Problem handling HTTP PUT requests

2008-01-09 Thread Roland Weber (JIRA)

[ 
https://issues.apache.org/jira/browse/HTTPCORE-137?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12557296#action_12557296
 ] 

Roland Weber commented on HTTPCORE-137:
---

Your PUT clients are obviously sending a HEAD request _before_ the PUT request, 
probably to verify that the resource to put doesn't exist yet. I suggest you 
handle the HEAD request as the HEAD request that it is, and then wait for the 
subsequent PUT request.


> Problem handling HTTP PUT requests 
> ---
>
> Key: HTTPCORE-137
> URL: https://issues.apache.org/jira/browse/HTTPCORE-137
> Project: HttpComponents Core
>  Issue Type: Bug
>  Components: HttpCore NIO
>Affects Versions: 4.0-rc1
> Environment: Java JDK 1.6.0_03 on Windows XP Service Pack 2
>Reporter: Ronald E Johnson
> Attachments: TestHTTPServer.java
>
>
> I have a Java Swing application with an HttpServer() instance running in a 
> SwingWorker thread.  I'm able to get at the HTTP GET requests by casting the 
> request as follows:
> if (request instanceof HttpEntityEnclosingRequest)  {
> HttpEntity entity = ((HttpEntityEnclosingRequest) 
> request).getEntity();
> byte[] entityContent = EntityUtils.toByteArray(entity);
> logger.info("Incoming entity content (bytes): " + 
> entityContent.length);
> }
> However this does not work for PUT requests. In fact printing out the request 
> line of a PUT request appears as: "HEAD /test.txt HTTP/1.1", and I don't see 
> PUT in the request line at all.  Attempting to cast this as an 
> HttpEntityEnclosingRequest fails, and thus I'm not able to get at the 
> HttpEntity.  Is this functionality supported?  

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



[jira] Commented: (HTTPCORE-137) Problem handling HTTP PUT requests

2008-01-07 Thread JIRA

[ 
https://issues.apache.org/jira/browse/HTTPCORE-137?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12556759#action_12556759
 ] 

Ortwin Glück commented on HTTPCORE-137:
---

You are seeing a HEAD, because it *is* a HEAD. Please use a packet sniffer like 
tcpdump or Wireshark if and inspect the traffic directly on the wire, if you 
are still having doubts.

> Problem handling HTTP PUT requests 
> ---
>
> Key: HTTPCORE-137
> URL: https://issues.apache.org/jira/browse/HTTPCORE-137
> Project: HttpComponents Core
>  Issue Type: Bug
>  Components: HttpCore NIO
>Affects Versions: 4.0-rc1
> Environment: Java JDK 1.6.0_03 on Windows XP Service Pack 2
>Reporter: Ronald E Johnson
> Attachments: TestHTTPServer.java
>
>
> I have a Java Swing application with an HttpServer() instance running in a 
> SwingWorker thread.  I'm able to get at the HTTP GET requests by casting the 
> request as follows:
> if (request instanceof HttpEntityEnclosingRequest)  {
> HttpEntity entity = ((HttpEntityEnclosingRequest) 
> request).getEntity();
> byte[] entityContent = EntityUtils.toByteArray(entity);
> logger.info("Incoming entity content (bytes): " + 
> entityContent.length);
> }
> However this does not work for PUT requests. In fact printing out the request 
> line of a PUT request appears as: "HEAD /test.txt HTTP/1.1", and I don't see 
> PUT in the request line at all.  Attempting to cast this as an 
> HttpEntityEnclosingRequest fails, and thus I'm not able to get at the 
> HttpEntity.  Is this functionality supported?  

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



[jira] Commented: (HTTPCORE-137) Problem handling HTTP PUT requests

2008-01-07 Thread Ronald E Johnson (JIRA)

[ 
https://issues.apache.org/jira/browse/HTTPCORE-137?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12556744#action_12556744
 ] 

Ronald E Johnson commented on HTTPCORE-137:
---

Should I log this as a different bug, in that PUT requests show up as HEAD 
requests?

> Problem handling HTTP PUT requests 
> ---
>
> Key: HTTPCORE-137
> URL: https://issues.apache.org/jira/browse/HTTPCORE-137
> Project: HttpComponents Core
>  Issue Type: Bug
>  Components: HttpCore NIO
>Affects Versions: 4.0-rc1
> Environment: Java JDK 1.6.0_03 on Windows XP Service Pack 2
>Reporter: Ronald E Johnson
> Attachments: TestHTTPServer.java
>
>
> I have a Java Swing application with an HttpServer() instance running in a 
> SwingWorker thread.  I'm able to get at the HTTP GET requests by casting the 
> request as follows:
> if (request instanceof HttpEntityEnclosingRequest)  {
> HttpEntity entity = ((HttpEntityEnclosingRequest) 
> request).getEntity();
> byte[] entityContent = EntityUtils.toByteArray(entity);
> logger.info("Incoming entity content (bytes): " + 
> entityContent.length);
> }
> However this does not work for PUT requests. In fact printing out the request 
> line of a PUT request appears as: "HEAD /test.txt HTTP/1.1", and I don't see 
> PUT in the request line at all.  Attempting to cast this as an 
> HttpEntityEnclosingRequest fails, and thus I'm not able to get at the 
> HttpEntity.  Is this functionality supported?  

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



[jira] Commented: (HTTPCORE-137) Problem handling HTTP PUT requests

2008-01-07 Thread Ronald E Johnson (JIRA)

[ 
https://issues.apache.org/jira/browse/HTTPCORE-137?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12556743#action_12556743
 ] 

Ronald E Johnson commented on HTTPCORE-137:
---

Unfortunately the PUT request is never seen, so if I remove the 
method.equals("HEAD") condition, the request is never processed by the server.

Notice the request line printout:  "Request Line: HEAD /test.txt HTTP/1.1"

How do get the server to see the PUT requests as a PUT and not a HEAD request?




> Problem handling HTTP PUT requests 
> ---
>
> Key: HTTPCORE-137
> URL: https://issues.apache.org/jira/browse/HTTPCORE-137
> Project: HttpComponents Core
>  Issue Type: Bug
>  Components: HttpCore NIO
>Affects Versions: 4.0-rc1
> Environment: Java JDK 1.6.0_03 on Windows XP Service Pack 2
>Reporter: Ronald E Johnson
> Attachments: TestHTTPServer.java
>
>
> I have a Java Swing application with an HttpServer() instance running in a 
> SwingWorker thread.  I'm able to get at the HTTP GET requests by casting the 
> request as follows:
> if (request instanceof HttpEntityEnclosingRequest)  {
> HttpEntity entity = ((HttpEntityEnclosingRequest) 
> request).getEntity();
> byte[] entityContent = EntityUtils.toByteArray(entity);
> logger.info("Incoming entity content (bytes): " + 
> entityContent.length);
> }
> However this does not work for PUT requests. In fact printing out the request 
> line of a PUT request appears as: "HEAD /test.txt HTTP/1.1", and I don't see 
> PUT in the request line at all.  Attempting to cast this as an 
> HttpEntityEnclosingRequest fails, and thus I'm not able to get at the 
> HttpEntity.  Is this functionality supported?  

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



[jira] Commented: (HTTPCORE-137) Problem handling HTTP PUT requests

2008-01-07 Thread Ronald E Johnson (JIRA)

[ 
https://issues.apache.org/jira/browse/HTTPCORE-137?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12556736#action_12556736
 ] 

Ronald E Johnson commented on HTTPCORE-137:
---

When running the test code using Winie (http://jigsaw.w3.org/Winie), I get the 
following output:

connection from 10.0.0.2
Request: [EMAIL PROTECTED]
Request Line: HEAD /test.txt HTTP/1.1
Method: HEAD
Processing PUT request...
Printing HTTP headers:
Header: Date, Value: Mon, 07 Jan 2008 22:04:07 GMT
Header: Accept, Value: */*
Header: Host, Value: 10.0.0.2
Header: User-Agent, Value: Winie/1.0.10
Request Target: /test.txt
File Transfer: Mon Jan 07 17:04:07 EST 2008 IP: 10.0.0.2 Path: C:\temp\test.txt
Connection timed out: [closed]
connection closed from 10.0.0.2

The cast to an HttpEntityEnclosingRequest never happens.  The request line from 
Winie is seen as a HEAD request.  I've tried other PUT clients, but they give 
the same results.


> Problem handling HTTP PUT requests 
> ---
>
> Key: HTTPCORE-137
> URL: https://issues.apache.org/jira/browse/HTTPCORE-137
> Project: HttpComponents Core
>  Issue Type: Bug
>  Components: HttpCore NIO
>Affects Versions: 4.0-rc1
> Environment: Java JDK 1.6.0_03 on Windows XP Service Pack 2
>Reporter: Ronald E Johnson
> Attachments: TestHTTPServer.java
>
>
> I have a Java Swing application with an HttpServer() instance running in a 
> SwingWorker thread.  I'm able to get at the HTTP GET requests by casting the 
> request as follows:
> if (request instanceof HttpEntityEnclosingRequest)  {
> HttpEntity entity = ((HttpEntityEnclosingRequest) 
> request).getEntity();
> byte[] entityContent = EntityUtils.toByteArray(entity);
> logger.info("Incoming entity content (bytes): " + 
> entityContent.length);
> }
> However this does not work for PUT requests. In fact printing out the request 
> line of a PUT request appears as: "HEAD /test.txt HTTP/1.1", and I don't see 
> PUT in the request line at all.  Attempting to cast this as an 
> HttpEntityEnclosingRequest fails, and thus I'm not able to get at the 
> HttpEntity.  Is this functionality supported?  

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



[jira] Commented: (HTTPCORE-137) Problem handling HTTP PUT requests

2008-01-07 Thread Oleg Kalnichevski (JIRA)

[ 
https://issues.apache.org/jira/browse/HTTPCORE-137?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12556708#action_12556708
 ] 

Oleg Kalnichevski commented on HTTPCORE-137:


> In fact printing out the request line of a PUT request appears as: "HEAD 
> /test.txt HTTP/1.1"

Maybe the server is indeed getting a HEAD request, which explains the fact why 
it does not implement HttpEntityEnclosingRequest, don't you think? 

> Is this functionality supported?

Yes, it is.

Please provide an isolated test case that reproduces the problem, otherwise 
I'll close this issue as invalid.

Oleg

> Problem handling HTTP PUT requests 
> ---
>
> Key: HTTPCORE-137
> URL: https://issues.apache.org/jira/browse/HTTPCORE-137
> Project: HttpComponents Core
>  Issue Type: Bug
>  Components: HttpCore NIO
>Affects Versions: 4.0-rc1
> Environment: Java JDK 1.6.0_03 on Windows XP Service Pack 2
>Reporter: Ronald E Johnson
>
> I have a Java Swing application with an HttpServer() instance running in a 
> SwingWorker thread.  I'm able to get at the HTTP GET requests by casting the 
> request as follows:
> if (request instanceof HttpEntityEnclosingRequest)  {
> HttpEntity entity = ((HttpEntityEnclosingRequest) 
> request).getEntity();
> byte[] entityContent = EntityUtils.toByteArray(entity);
> logger.info("Incoming entity content (bytes): " + 
> entityContent.length);
> }
> However this does not work for PUT requests. In fact printing out the request 
> line of a PUT request appears as: "HEAD /test.txt HTTP/1.1", and I don't see 
> PUT in the request line at all.  Attempting to cast this as an 
> HttpEntityEnclosingRequest fails, and thus I'm not able to get at the 
> HttpEntity.  Is this functionality supported?  

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]