2010-04-08 4 views
2

У меня возникли проблемы с задачей, которая должна быть довольно простой. Мне просто нужен массив JSON с одним объектом JSON внутри него, чтобы его можно было отправить в мой веб-сервис. Запрос на весь URL должен быть отформатирован следующим образом:Публикация массива JSON на webservice в Android

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.

Это как POST данных в Java:

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

+1

«?» обозначение означает GET, так что вам это не нужно. Я никогда не видел, чтобы JSON отправлялся на сервер таким образом, хотя это было бы возможно. Ответ сервера вернется к соединению как c.getInputStream() –

Смежные вопросы