HTML form submit giving 400 bad request

Sowmya picture Sowmya · May 30, 2012 · Viewed 8.8k times · Source

I'm submitting a HTML form to REST(eXist db) web service using POST method.A normal submission is giving 400 bad request

Here is my HTML code

<html>
    <script type="text/javascript">
     /* function createXMLHttpRequest()
       {
        if( typeof XMLHttpRequest == "undefined" )
        XMLHttpRequest = function() 
         {
          try 
          { 
           return new ActiveXObject("Msxml2.XMLHTTP.6.0")
          } 
         catch(e) {}
          try 
          { 
           return new ActiveXObject("Msxml2.XMLHTTP.3.0")
          } 
         catch(e) {}
          try
          { 
          return new ActiveXObject("Msxml2.XMLHTTP") 
          } 
         catch(e) {}
          try 
          { 
          return new ActiveXObject("Microsoft.XMLHTTP") 
          } 
         catch(e) {}
         throw new Error( "This browser does not support XMLHttpRequest." )
      };
       return new XMLHttpRequest();
     }

var AJAX = createXMLHttpRequest();*/
function submitForm()
 {

    //AJAX.open("POST",'http://localhost:8899/exist/rest/db/xql/sample.xq');
   // AJAX.send(document.form.xmlData.value);
   document.form.submit();
 };
</script>
<head>  
    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
</head>
<body>
 <form name='form' action="http://localhost:8899/exist/rest/db/xql/sample.xq"  enctype="text/plain" method="post">
   <input type="text" name="xmlData"/>
   <input type="button" value="Submit" onclick="submitForm()";>
 </form>
</body>
</html>

The commented code is to send POST request using AJAX. I captured the http header request and response for form submit and AJAX submit These are the request headers:

HTML form submit header:

(Request-Line)  POST /exist/rest/db/xql/sample.xq HTTP/1.1
Host    localhost:8899
User-Agent  Mozilla/5.0 (Windows NT 5.1; rv:12.0) Gecko/20100101 Firefox/12.0
Accept  text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language en-us,en;q=0.5
Accept-Encoding gzip, deflate
Connection  keep-alive
Content-Type    text/plain
Content-Length  26

AJAX request header:

(Request-Line)  POST /exist/rest/db/xql/sample.xq HTTP/1.1
Host    localhost:8899
User-Agent  Mozilla/5.0 (Windows NT 5.1; rv:12.0) Gecko/20100101 Firefox/12.0
Accept  text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language en-us,en;q=0.5
Accept-Encoding gzip, deflate
Connection  keep-alive
Content-Length  16
Content-Type    text/plain; charset=UTF-8
Origin  null
Pragma  no-cache
Cache-Control   no-cache

Im not getting what's wrong in my code . Im working on this for 2 days but i din't find any solution. Please look into this and provide a solution.

Thanks in advance.

Answer

Madara&#39;s Ghost picture Madara's Ghost · May 30, 2012

I'm pretty sure it's because you're sending only the value in your data.

You need to send a name = value pair.