Aha! Yeah, the I was just getting the headers before. Now I can see that it is happily sending the file properly... Now it's just barfing on an invalid XML node, which it shouldn't, but oh well.

Thanks for the help!


~Chris

Oleg Kalnichevski wrote:
On Tue, Sep 13, 2005 at 11:01:24AM -0400, Chris Ashurst wrote:

In my continuing saga of making HttpClient talk to an ISS5 server through SSL and Basic authentication, I have come across an interesting bit of information.

Reading through the archives, I noticed a post for a piece of software called Ethereal for packet logging. I installed it and logged the IO and received a nasty surprise. I seem to be getting an error along the lines of [Unreassembled Packet [Incorrect TCP checksum]], which I'm guessing (since Ethereal doesn't seem to want to decode the packet into something human-readable) is my SOAP envelope somehow being malformed during the transport process.



Chris,

I seriously doubt HttpClient can cause IP packet corruption. HTTP sits
on top of TCP/IP and simply does not have means to manipulate lower
level structures.



What I would like to know is if there's a way to see *specfically* how HttpClient is sending my RequestEntity, and if it is in fact sending the correct content-length and so on.


Enable content + header wire logging. For details see the HttpClient
logging guide:

http://jakarta.apache.org/commons/httpclient/logging.html

Hope this helps

Oleg



I know now that the SOAP package I'm trying to send is valid, as I sent it to the people running the remote server and it processes fine, so the only place I can see now where the problem is lying would be that HttpClient is malforming the package.

I'm using the following to send the SOAP/XML file:

~~~
File input = new File("testCreate.xml");

client.getParams().setAuthenticationPreemptive(true); client.getParams().setVersion(HttpVersion.HTTP_1_1); client.getParams().setBooleanParameter("http.protocol.expect-continue", true);
post.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
post.setRequestHeader("SOAPAction","http://remote.server.com/ProcessXml";);
post.setRequestEntity(new InputStreamRequestEntity(new FileInputStream(input), input.length()));

int status = client.executeMethod(post);
~~~

In the debug/wire log, all it tells me is that "EntityEnclosingMethod - Request body sent", and I know that if I just tried to output the contents of the file, it wouldn't be the same as what was being transported to the remote server.

(Alternatively, if someone can tell me if there's a way to decode the output from Ethereal, that would work just as well. I know this isn't the Ethereal support list, but I figure someone must know ;) )

Many thanks,


~Chris


--
~Chris Ashurst
~~Tower Hill Insurance
[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]

--
~Chris Ashurst
~~Tower Hill Insurance
[EMAIL PROTECTED]

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

Reply via email to