org.apache.http.client.HttpResponseException: Internal Server Error while posting xml String to server

19,045

Solution 1

The error is coming from your server. The XML may be generated properly, but the server is encountering an error when it gets it. You will need to debug the web application to figure out what is wrong.

Hope this helps.

Solution 2

I had a similar problem. In my case the server was not handling the POST request properly. When I changed to GET the exception didn't come.

Share:
19,045
Nuraiz
Author by

Nuraiz

Android/iOS Developer

Updated on June 05, 2022

Comments

  • Nuraiz
    Nuraiz almost 2 years

    I am sending a xml string to my web application using httpClient#execute(HttpPost, ResponseHandler)

    It works fine when string contains only one tag, but it returns Internal Server Error if two same tags come after root tag. For example:

    <Class>
            <Student>Some Elements and Attributes</Student>
            <Student>Some Elements and Attributes</Student>
    </Class>
    

    My Code is here for creating xml string:

    DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
    DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
    
    //root element
    Document document = docBuilder.newDocument();
    Element rootElement = document.createElement("Class");
    document.appendChild(rootElement);
    
    Element student = document.createElement("Student");
    rootElement.appendChild(student);
    
    Attr name = document.createAttribute("Name");
    name.setValue("");
    student.setAttributeNode(name);
    
    //Courses
    Element courses = document.createElement("Courses");
    Element course = document.createElement("Course");
    Attr name = document.createAttribute("Name");
    name.setValue("any name");
    level.setAttributeNode(name);
    courses.appendChild(course);
    student.appendChild(courses);
    
    // write the content into xml string
    TransformerFactory factory = TransformerFactory.newInstance();
    Transformer transformer = factory.newTransformer();
    StringWriter writer = new StringWriter();
    Result result = new StreamResult(writer);
    Source source = new DOMSource(document);
    transformer.transform(source, result);
    writer.close();
    xml = writer.toString();
    

    Here is code for sending xml string:

    String url = "My URL string";
    
    DefaultHttpClient httpClient = new DefaultHttpClient();   
    ResponseHandler<String> res = new BasicResponseHandler();
    
    List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
    nameValuePairs.add(new BasicNameValuePair("param1", "student name"));
    nameValuePairs.add(new BasicNameValuePair("param2", xmlString));
    
    HttpPost httpPost = new HttpPost(url);
    httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
    
    String response = httpClient.execute(httpPost, res);
    

    This code is creating problem. StackTrace is here:

    09-21 00:58:29.486: WARN/System.err(7450): org.apache.http.client.HttpResponseException: Internal Server Error
    09-21 00:58:29.490: WARN/System.err(7450):     at org.apache.http.impl.client.BasicResponseHandler.handleResponse(BasicResponseHandler.java:71)
    09-21 00:58:29.494: WARN/System.err(7450):     at org.apache.http.impl.client.BasicResponseHandler.handleResponse(BasicResponseHandler.java:59)
    09-21 00:58:29.497: WARN/System.err(7450):     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:657)
    09-21 00:58:29.501: WARN/System.err(7450):     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:627)
    09-21 00:58:29.501: WARN/System.err(7450):     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:616)
    09-21 00:58:29.505: WARN/System.err(7450):     at com.example.httpandroidtutorial.HttpAndroidTutorialActivity.onClick(HttpAndroidTutorialActivity.java:122)
    09-21 00:58:29.509: WARN/System.err(7450):     at android.view.View.performClick(View.java:2461)
    09-21 00:58:29.513: WARN/System.err(7450):     at android.view.View$PerformClick.run(View.java:8888)
    09-21 00:58:29.517: WARN/System.err(7450):     at android.os.Handler.handleCallback(Handler.java:587)
    09-21 00:58:29.517: WARN/System.err(7450):     at android.os.Handler.dispatchMessage(Handler.java:92)
    09-21 00:58:29.521: WARN/System.err(7450):     at android.os.Looper.loop(Looper.java:123)
    09-21 00:58:29.525: WARN/System.err(7450):     at android.app.ActivityThread.main(ActivityThread.java:4627)
    09-21 00:58:29.529: WARN/System.err(7450):     at java.lang.reflect.Method.invokeNative(Native Method)
    09-21 00:58:29.533: WARN/System.err(7450):     at java.lang.reflect.Method.invoke(Method.java:521)
    09-21 00:58:29.533: WARN/System.err(7450):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
    09-21 00:58:29.537: WARN/System.err(7450):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
    09-21 00:58:29.540: WARN/System.err(7450):     at dalvik.system.NativeStart.main(Native Method)
    

    What is the reason for these HttpResponseExceptions?