2010-04-08 76 views
2

我遇到了一些問題,應該是一個相當簡單的任務。我只需要一個JSON數組,其中包含一個JSON對象,並將其發佈到我的web服務中。整個URL請求需要像這樣被格式化:在Android中發佈JSON數組到webservice

http://www.myserver.com/myservice.php?location_data=[ {"key1":"val1","key2":"val2"....}]

我不能爲我的生活弄清楚如何把「location_data」使用HttpPost位。 下面的代碼片段展示我使用的HTTP連接方法:

HttpClient hClient = new DefaultHttpClient(); 
    HttpPost hPost = new HttpPost(url); 

    try { 
     hPost.setEntity(new StringEntity(string)); 
     hPost.setHeader("Accept", "application/json"); 
     hPost.setHeader("Content-type", "application/json"); 

     //execute request 
     HttpResponse response = (HttpResponse) hClient.execute(hPost); 
     HttpEntity entity = response.getEntity(); 

我沒有任何語法錯誤,我的代碼是訪問服務器很好,只是沒有確切的格式服務器需求。任何幫助如何格式化我的請求,看起來像我需要它,將不勝感激!

回答

2

在'?'後面添加鍵/值數據到URL是GET而不是POST。

這是如何在Java中的POST數據:

String urlText = "http://www.myserver.com/myservice.php"; 
String postContent = "location_data=[{\"key1\":\"val1\",\"key2\":\"val2\"}]"; 
try { 
    HttpURLConnection c = (HttpURLConnection) new URL(urlText).openConnection(); 
    c.setDoOutput(true); 
    OutputStreamWriter writer = new OutputStreamWriter(c.getOutputStream(), "UTF-8"); 
    writer.write(postContent); 
    writer.close(); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 
+0

感謝信息吉姆!爲了說清楚,如果您爲我寫的代碼是POST,那麼它是否仍然使用'?'格式化它。像我需要? 另外,我如何檢索和存儲服務器響應使用你的方法? 再次感謝 – Sam 2010-04-08 06:34:31

+1

'?'符號表示GET,所以你不需要這個。我從來沒有見過JSON以這種方式發送到服務器,儘管這是可能的。服務器響應將作爲c.getInputStream()返回到連接上 – 2010-04-08 08:58:41