Вызов API методом HTTP POST без использования имени параметра для тела
Я использую Java. Как я могу сделать API вызова HTTP POST и сообщить в теле только значение "JSON" (без имени параметра)?
Для каждого примера вызовите этот URL: https://api.nimble.com/api/v1/contact?access_token=12123486db0552de35ec6daa0cc836b0 (POST METHOD) и в теле будет иметь только это (без имени параметра):
{'fields':{'first name': [{'value': 'Jack','modifier': '',}],'last name': [{'value': 'Daniels','modifier': '',}],'phone': [{'modifier': 'work','value': '123123123',}, {'modifier':'work','value': '2222',}],},'type': 'person','tags': 'our customers\,best'}
Если это правильно, кто-то может дать мне пример, пожалуйста?
1 ответ
Решение
Использование этой библиотеки для сетевой части: http://hc.apache.org/
Использование этой библиотеки для части json: http://code.google.com/p/google-gson/
Пример:
public String examplePost(DataObject data) {
HttpClient httpClient = new DefaultHttpClient();
try {
HttpPost httppost = new HttpPost("your url");
// serialization of data into json
Gson gson = new GsonBuilder().serializeNulls().create();
String json = gson.toJson(data);
httppost.addHeader("content-type", "application/json");
// creating the entity to send
ByteArrayEntity toSend = new ByteArrayEntity(json.getBytes());
httppost.setEntity(toSend);
HttpResponse response = httpClient.execute(httppost);
String status = "" + response.getStatusLine();
System.out.println(status);
HttpEntity entity = response.getEntity();
InputStream input = entity.getContent();
StringWriter writer = new StringWriter();
IOUtils.copy(input, writer, "UTF8");
String content = writer.toString();
// do something useful with the content
System.out.println(content);
writer.close();
EntityUtils.consume(entity);
} catch (Exception e) {
e.printStackTrace();
return null;
} finally {
httpClient.getConnectionManager().shutdown();
}
}
Надеюсь, поможет.