2013-02-18 1 views
2

Я использую Java. Как я могу создать API-интерфейс HTTP POST и сообщить в тело только значение «JSON» (без имени параметра)?API-вызов по методу HTTP POST без использования имени параметра для тела

в примере называют этот 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(); 
     } 
    } 

Надеется, что это помогает.

+0

Большое спасибо за ответ, но это не сработало, я адаптировал код и поместил значение json в строку json var, но перед запуском выполнения произошла ошибка: 'code' java.util.concurrent .ExecutionException: org.apache.catalina.LifecycleException: Не удалось запустить компонент [StandardEngine [Catalina] .StandardHost [localhost] .StandardContext [/ nimble]] Я пытаюсь с помощью этого кода [link] (http: // stackoverflow .com/questions/15276056/409-http-error-when-try-to-send-a-json-string-in-post-request), но я получаю ошибку 409 http :(Спасибо еще раз! –

+0

Вы что ваш json действителен? – Bdloul

+0

json неверен, я думал, что «http://jsonviewer.stack.hu/» проверяет правильно, но нет, «http://jsonlint.org/» проверяет правильность. мотки. –