2012-02-22 5 views
1

Im gonna develope Android-приложение, которое я сделал несколько раз раньше, но теперь трюк заключается в том, что мне нужно получить доступ к базе данных (не sqllite в устройстве). И мы сделали сайт, прежде чем у него есть все функции, которые мне нужны. Поэтому я думал использовать этот веб-сайт (MVC3) для получения информации из базы данных и отправки информации в базу данных из приложения. У вас, ребята, есть идеи для меня, как это кодировать? Мне нужно, чтобы получить данные с сайта на приложение с Json или Gson, я думаю, тогда мне нужно опубликовать некоторые данные для контроллеров из приложения, не знаю, нужно ли мне использовать параметры URL-адреса или если я могу использовать Jsom так и?Получите/опубликуйте данные из Android-приложения на сайт MVC3 и разместите

ответ

1

Чтобы отправить json-объект в ASP.NET-контроллере, например: {"name": "foo", "age": 5}

Код контроллера может быть что-то вроде:

[HttpPost] 
public JsonResult MyAction(UserViewModel UserModel) 
{ 
    /* do something with your usermodel object */ 
    UserModel.Name = "foo"; 
    UserModel.Age = 5; 

    return Json(UserModel, JsonRequestBehavior.AllowGet); 
} 

EDIT: На Android стороне, здесь метод, чтобы отправить запрос и получить ответ:

public void GetDataFromServer() { 

    ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); 
    nameValuePairs.add(new BasicNameValuePair("data_1", "data")); 
    nameValuePairs.add(new BasicNameValuePair("data_n", "data")); 
    try { 
    HttpPost httppost = new HttpPost("http://path_to_the_controller_on_server"); 
    String result = RetrieveDataFromHttpRequest(httppost,nameValuePairs); 
    // parse json data 
    JSONObject jObjRoot = new JSONObject(result); 
    String objName = jObjRoot.getString("Name"); 
     String objName = jObjRoot.getString("Age"); 
    } catch (JSONException e) { 
    Log.e(TAG, "Error parsing data " + e.toString()); 
    } 
} 

private String RetrieveDataFromHttpRequest(HttpPost httppost, ArrayList<NameValuePair> nameValuePairs) { 

    StringBuilder sb = new StringBuilder(); 
    try { 
     HttpClient httpclient = new DefaultHttpClient(); 
     if (nameValuePairs != null) 
      httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
     HttpResponse response = httpclient.execute(httppost); 
     HttpEntity entity = response.getEntity(); 
     InputStream is = entity.getContent(); 
     // convert response to string 
     BufferedReader reader = new BufferedReader(new InputStreamReader(is, "iso-8859-1")); 
     String line = null; 
     while ((line = reader.readLine()) != null) { 
      sb.append(line + "\n"); 
     } 
     is.close(); 
    } catch (UnsupportedEncodingException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (IllegalStateException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    return sb.toString(); 
} 
+0

Как вы затем вызовите этот метод, чтобы получить информацию от контроллера mvc в java - Eclipse? (в коде) –

+0

взгляните на EDIT моего сообщения – superbre

+0

Чрезвычайно много! Получил ли он работу, есть ли способ кодировать результат? Например: im, передающий ÅÄÖ в значениях, но выходит как некоторые странные символы., –

1

Вы можете использовать запросы JSON. ASP.NET MVC 3 имеет встроенный JsonValueProvider, который позволяет десериализовать запросы JSON в сильно типизированные модели просмотра. Например, давайте предположим, что у вас есть следующие модели:

public class MyViewModel 
{ 
    public string Name { get; set; } 
    public int Age { get; set; } 
} 

и следующее действие контроллера:

[HttpPost] 
public ActionResult MyAction(MyViewModel model) 
{ 
    ... 
} 

вы можете отправить следующий POST запрос на него:

POST /mycontroller/myaction 
Content-Length: 22 
Content-Type: application/json; charset=UTF-8 
Host: www.example.com 

{"name":"foo","age":5} 

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

  • Нет связанных вопросов^_^