Sending POST request using com.google.api.client.http.HttpRequest object in Google API

user2050558 picture user2050558 · Feb 7, 2013 · Viewed 18.6k times · Source

I have to send POST request with following structure.

    POST https://www.googleapis.com/fusiontables/v1/tables
    Authorization: /* auth token here */
    Content-Type: application/json

    {
     "name": "Insects",
     "columns": [
     {
        "name": "Species",
        "type": "STRING"
     },
     {
         "name": "Elevation",
         "type": "NUMBER"
     },
    {
         "name": "Year",
         "type": "DATETIME"
    }
      ],
   "description": "Insect Tracking Information.",
   "isExportable": true
    }

I am using below code to send the POST Request but i am getting a response as "400 Bad Request"

String PostUrl = "https://www.googleapis.com/fusiontables/v1/tables";
HttpRequestFactory requestFactory = HTTP_TRANSPORT.createRequestFactory(credential);

//generate the REST based URL
GenericUrl url = new GenericUrl(PostUrl.replaceAll(" ", "%20"));
//make POST request

String requestBody = "{'name': 'newIndia','columns': [{'name': 'Species','type': 'STRING'}],'description': 'Insect Tracking Information.','isExportable': true}";

HttpRequest request = requestFactory.buildPostRequest(url, ByteArrayContent.fromString(null, requestBody));
request.getHeaders().setContentType("application/json");
// Google servers will fail to process a POST/PUT/PATCH unless the Content-Length
// header >= 1
//request.setAllowEmptyContent(false);
System.out.println("HttpRequest request" + request);
HttpResponse response = request.execute();

I wonder if anyone there who have worked on this similar task can help me out sending the POST request according to the POST request format as mentioned at start of this question.

Answer

user2050558 picture user2050558 · Feb 8, 2013

I have sent POST request using the below code

String requestBody = "{'name': 'newIndia','columns': [{'name': 'Species','type': 'STRING'}],'description': 'Insect Tracking Information.','isExportable': true}";
HttpRequest request = requestFactory.buildPostRequest(url, ByteArrayContent.fromString("application/json", requestBody));
request.getHeaders().setContentType("application/json");