4

Here is my code for the POST request to the server.

The JSON to be posted to the server :

{  
"User": {    
"Name": "dog","Password": "123"  }

}

How I am creating the JSON Object

    object = new JSONObject();
    JSONObject jsonObject = new JSONObject();
    try {
        jsonObject.put("Name", "dog");
        jsonObject.put("Password", "123");
    } catch (JSONException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    try {
        object.put("User", jsonObject);
    } catch (JSONException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }

Posting to the server as

    public HttpResponse request(JSONObject request)
        throws ClientProtocolException, IOException, IllegalStateException,
            JSONException {
            client = (DefaultHttpClient) WebClientDevWrapper
                    .getNewHttpClient();

    HttpPost post = new HttpPost(
            "https://wbapi.cloudapp.net:443/api/User/LocalLogin/");
    post.setEntity(new StringEntity(request.toString(), "utf-8"));
    HttpResponse response = client.execute(post);
    return response;
}

Along with classes provided by Paresh Mayani Here Send HTTPS Post Request to the server

I am getting the response object. But my response.getStatusLine() keeps showing 500/ Internal server error for only POST requests.

Note : GET requests are working fine.

What is the Problem in my code ? How can I tackle this error ?

Changed the request code as ( As recommended by Bhavdip Pathar)

public HttpResponse request(JSONObject request)
        throws ClientProtocolException, IOException, IllegalStateException,
        JSONException {

    HttpPost post = new HttpPost(
            "https://wbapi.cloudapp.net:443/api/User/LocalLogin/");
    // post.setEntity(new StringEntity(request.toString(), "utf-8"));
    StringEntity entity = new StringEntity(request.toString(), HTTP.UTF_8);
    entity.setContentType("application/json");
    post.setHeader("Content-Type", "application/json");
    post.setHeader("Accept", "application/json");
    post.setEntity(entity);
    HttpResponse response = client.execute(post);
    return response;
}

I did set application/json and voila , I am getting HTTP/200 OK.

Community
  • 1
  • 1
Rajeev N B
  • 1,365
  • 2
  • 12
  • 24

1 Answers1

6

I think you should set contentType: "application/json" might be help please try this.

Thank you

Kishan Vaghela
  • 7,678
  • 5
  • 42
  • 67
Bhavdip Sagar
  • 1,951
  • 15
  • 27