Hello Folks,

I have run into a very odd problem.
I have to send a SOAP (xml data over HTTP Post) request to another server 
behind NTLM authentication. I am using HttpClient 4.0 for that.
The NTLM authentication works fine but when I try to send the xml data using 
StringEntity and set that Entity to the HTTPPpost Object, I am returned 400 
error code, meaning "bad request".
I tried to see the exact request that HTTPClient is sending using WireShark and 
indeed the format of the request is not correct. The headers are repeated twice 
and the body too is not correctly placed (unfortunately I cant point out the 
exact mistake, but comparing it with a request that a soap client sends its 
different and seeming incorrect).

Is anybody aware of any problems related to StringEntity? Or maybe any other 
way I can send xml data using HttpPost method in HttpClient 4.0 API.

Any help would be highly appreciated, I am behind my deadline on this task :(.

Thanks!!

PS:- For better understanding, here is a snippet of the code:-

DefaultHttpClient client = new DefaultHttpClient();
        client.getAuthSchemes().register("ntlm", new NTLMSchemeFactory());
        client.getCredentialsProvider().setCredentials(
                new AuthScope("host", port, "domain"),
                new NTCredentials("username", "password", "domain",
                        "domain2"));

        HttpPost httpget = new HttpPost(
                "http://ip/ServerAPI/ServerCommandService.asmx";);

        try {
            String soapRequest = "<?xml version=\"1.0\"encoding=\"utf-8\"?>"
                    + "<soap:Envelope "
                    + "xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"; "
                    + "xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"; "
                    + "xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\"";
                    + "<soap:Body>"
                    + "<Login 
xmlns=\"http://videoos.net/2/XProtectCSServerCommand\";>"
                    + 
"<instanceId>6a716afc-708e-479f-8b42-f97338d794f9</instanceId>"
                    + "<currentToken/>" + "</Login>" + "</soap:Body>"
                    + "</soap:Envelope>";


            httpget.addHeader("SOAPAction",
                    "\"http://videoos.net/2/XProtectCSServerCommand/Login\"";);

            StringEntity strent= new StringEntity(soapRequest);
            strent.setContentType("text/xml; charset=utf-8");
            httpget.setEntity(strent);

            ResponseHandler<String> response = new BasicResponseHandler();
            String responseBody = client.execute(httpget, response);
            System.out.println(responseBody);
}catch(IOException ex)
{
ex.printStackTrace();
}



      Now, send attachments up to 25MB with Yahoo! India Mail. Learn how. 
http://in.overview.mail.yahoo.com/photos

Reply via email to