You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hc.apache.org by "Boris J. Bonfils" <bb...@bording.dk> on 2003/05/23 16:04:50 UTC

null response stream when posting using https

Hi!

I'm trying to get your cool httpclient to work against a tomcat v. 4.06. 
When using PostMethod and GetMethod on an unsecure URL 
everything works fine. 
However I only get a correct response under https for the GetMethod.
The PostMethod reaches the server allright and the client seems to start
reading the response header but then I get a null pointer exception 
when accessing the response body or stream. I include the code snippet
and a wire trace.

Really hope you guys have a suggestion to what may be wrong here..

Best Regards,
Boris Jan Bonfils

==== BEGIN CODE SNIPPET =============
	HttpMethod method;
	HttpClient client = new HttpClient();
	URI uri = new
URI("https://127.0.0.1:8443/servlet/dk.bording.axt.test.TestServlet");

	boolean post=true;
	if(post) {
		method = new PostMethod(uri.toString());
		((PostMethod) method).setRequestBody("" + 100 + "\nPlease
return 100 bytes\n");
	} else {
		method = new GetMethod(uri.toString());
	}

	// Execute the method.
	int statusCode = -1;
	int attempt = 0;
	// We will retry up to 3 times.
	while (statusCode == -1 && attempt < 3) {
	  try {
		// execute the method.
		statusCode = client.executeMethod(method);
		Header []hders = method.getResponseHeaders();
		for(int x=0; x<hders.length; x++) {
			System.err.println(hders[x].toString());
		}
	  } catch (HttpRecoverableException e) {
		System.err.println(
		  "A recoverable exception occurred, retrying." + 
		  e.getMessage());
	  } catch (IOException e) {
		System.err.println("Failed to download file.");
		e.printStackTrace();
		System.exit(-1);
	  }
	}
	// Check that we didn't run out of retries.
	if (statusCode == -1) {
	  System.err.println("Failed to recover from exception.");
	  System.exit(-2);
	}

	// THIS ONE FAILS WITH AN EXCEPTION !!!!!!!
	// Read the response body.
	byte[] responseBody = method.getResponseBody();
==== END CODE SNIPPET

==== DEBUG TRACE AND EXCEPTION ====
0 [main] DEBUG org.apache.commons.httpclient.HttpMethod  - enter
getContentCharSet( Header contentheader )
0 [main] DEBUG org.apache.commons.httpclient.HttpMethod  - Default charset
used: ISO-8859-1
531 [main] DEBUG org.apache.commons.httpclient.HttpMethod  - enter
HttpMethodBase.execute(HttpState, HttpConnection)
571 [main] DEBUG org.apache.commons.httpclient.HttpMethod  - Execute loop
try 1
571 [main] DEBUG org.apache.commons.httpclient.HttpMethod  - enter
HttpMethodBase.processRequest(HttpState, HttpConnection)
571 [main] DEBUG org.apache.commons.httpclient.HttpMethod  - Attempt number
1 to write request
571 [main] DEBUG org.apache.commons.httpclient.HttpMethod  - enter
HttpMethodBase.writeRequest(HttpState, HttpConnection)
571 [main] DEBUG org.apache.commons.httpclient.HttpMethod  - enter
HttpMethodBase.writeRequestLine(HttpState, HttpConnection)
571 [main] DEBUG org.apache.commons.httpclient.HttpMethod  - enter
HttpMethodBase.generateRequestLine(HttpConnection, String, String, String,
String)
581 [main] DEBUG httpclient.wire  - >> "POST
/servlet/dk.bording.axt.test.TestServlet HTTP/1.1
" [\r\n]
751 [main] DEBUG org.apache.commons.httpclient.HttpMethod  - enter
HttpMethodBase.writeRequestHeaders(HttpState,HttpConnection)
751 [main] DEBUG org.apache.commons.httpclient.HttpMethod  - enter
HttpMethodBase.addRequestHeaders(HttpState, HttpConnection)
751 [main] DEBUG org.apache.commons.httpclient.HttpMethod  - enter
HttpMethodBase.addUserAgentRequestHeaders(HttpState, HttpConnection)
751 [main] DEBUG org.apache.commons.httpclient.HttpMethod  - enter
HttpMethodBase.addHostRequestHeader(HttpState, HttpConnection)
751 [main] DEBUG org.apache.commons.httpclient.HttpMethod  - Adding Host
request header
751 [main] DEBUG org.apache.commons.httpclient.HttpMethod  - enter
HttpMethodBase.addCookieRequestHeader(HttpState, HttpConnection)
841 [main] DEBUG org.apache.commons.httpclient.HttpMethod  - enter
HttpMethodBase.addAuthorizationRequestHeader(HttpState, HttpConnection)
841 [main] DEBUG org.apache.commons.httpclient.HttpMethod  - enter
HttpMethodBase.addProxyAuthorizationRequestHeader(HttpState, HttpConnection)
841 [main] DEBUG org.apache.commons.httpclient.HttpMethod  - enter
HttpMethodBase.addContentLengthRequestHeader(HttpState, HttpConnection)
841 [main] DEBUG httpclient.wire  - >> "User-Agent: Jakarta
Commons-HttpClient/2.0alpha3
" [\r\n]
841 [main] DEBUG httpclient.wire  - >> "Host: 127.0.0.1:8443
" [\r\n]
851 [main] DEBUG httpclient.wire  - >> "Content-Length: 17
" [\r\n]
851 [main] DEBUG httpclient.wire  - >> "Expect: 100-continue
" [\r\n]
851 [main] DEBUG httpclient.wire  - >> [\r\n]
3866 [main] DEBUG org.apache.commons.httpclient.HttpMethod  - Response not
available. Send the request body
3866 [main] DEBUG org.apache.commons.httpclient.HttpMethod  - enter
writeRemainingRequestBody(HttpState, HttpConnection)
3886 [main] DEBUG org.apache.commons.httpclient.HttpMethod  - enter
HttpMethodBase.readResponse(HttpState, HttpConnection)
3896 [main] DEBUG org.apache.commons.httpclient.HttpMethod  - enter
HttpMethodBase.readStatusLine(HttpState, HttpConnection)
3896 [main] DEBUG httpclient.wire  - << "HTTP/1.1 100 Continue
" [\r\n]
3906 [main] DEBUG org.apache.commons.httpclient.HttpMethod  - enter
HttpMethodBase.readResponseHeaders(HttpState,HttpConnection)
3906 [main] DEBUG httpclient.wire  - << "
" [\r\n]
3916 [main] DEBUG org.apache.commons.httpclient.HttpMethod  - enter
HttpMethodBase.processResponseHeaders(HttpState, HttpConnection)
3916 [main] DEBUG org.apache.commons.httpclient.HttpMethod  - enter
HttpMethodBase.readResponseBody(HttpState, HttpConnection)
3916 [main] DEBUG org.apache.commons.httpclient.HttpMethod  - enter
HttpMethodBase.readResponseBody(HttpState, HttpConnection)
3916 [main] DEBUG org.apache.commons.httpclient.HttpMethod  - enter
HttpMethodBase.canResponseHaveBody(int)
java.lang.NullPointerException
	at
org.apache.commons.httpclient.HttpMethodBase.getResponseBody(HttpMethodBase.
java:670)
	at
org.apache.commons.httpclient.methods.GetMethod.getResponseBody(GetMethod.ja
va:293)
	at
dk.bording.axt.test.HTTPSBenchmark.apacheExample(HTTPSBenchmark.java:678)
	at dk.bording.axt.test.HTTPSBenchmark.main(HTTPSBenchmark.java:716)
Exception in thread "main" 



Re: null response stream when posting using https

Posted by Ortwin Glück <or...@nose.ch>.
I just wonder which version of HttpClient are you using.

Boris J. Bonfils wrote:
> I'm trying to get your cool httpclient to work against a tomcat v. 4.06.