2013-02-18 68 views
2

我正在使用Java。我如何創建一個HTTP POST調用API並僅在主體中通知「JSON」值(不帶參數名稱)?通過HTTP POST方法調用API而不使用參數名稱的正文

每例如調用這個URL:https://api.nimble.com/api/v1/contact?access_token=12123486db0552de35ec6daa0cc836b0(POST方法),並在身體只會有這個(不帶參數名):

{'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]] 我試着用這段代碼[鏈接](http:// stackoverflow .com/questions/15276056/409-http-error-when-trying-to-send-a-json-string-in-post-request),但是我得到409 http錯誤:(。再次感謝你! – 2013-03-07 16:24:24

+0

你好嗎確定你的json是有效的? – Bdloul 2013-03-11 23:59:09

+0

json不正確,我認爲「http://jsonviewer.stack.hu/」正確驗證,但不是,「http://jsonlint.org/」正確驗證。漢克斯。 – 2013-03-28 20:25:29

相關問題