hc-httpclient-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From arpita dhundia <arpita_dhun...@yahoo.co.in>
Subject Sending SOAP request using HTTPPost (HttpClient 4.0)
Date Fri, 30 Oct 2009 10:28:16 GMT
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
Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message