Получение / публикация данных из приложения Android на веб-сайте MVC3 и viseverse - PullRequest
1 голос
/ 22 февраля 2012

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

Ответы [ 2 ]

1 голос
/ 08 июня 2012

Чтобы отправить объект 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);
}

РЕДАКТИРОВАТЬ: на стороне 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(); 
}
1 голос
/ 22 февраля 2012

Вы можете использовать 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}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...