Im gonna develope Android-приложение, которое я сделал несколько раз раньше, но теперь трюк заключается в том, что мне нужно получить доступ к базе данных (не sqllite в устройстве). И мы сделали сайт, прежде чем у него есть все функции, которые мне нужны. Поэтому я думал использовать этот веб-сайт (MVC3) для получения информации из базы данных и отправки информации в базу данных из приложения. У вас, ребята, есть идеи для меня, как это кодировать? Мне нужно, чтобы получить данные с сайта на приложение с Json или Gson, я думаю, тогда мне нужно опубликовать некоторые данные для контроллеров из приложения, не знаю, нужно ли мне использовать параметры URL-адреса или если я могу использовать Jsom так и?Получите/опубликуйте данные из Android-приложения на сайт MVC3 и разместите
1
A
ответ
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();
}
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}
Как вы затем вызовите этот метод, чтобы получить информацию от контроллера mvc в java - Eclipse? (в коде) –
взгляните на EDIT моего сообщения – superbre
Чрезвычайно много! Получил ли он работу, есть ли способ кодировать результат? Например: im, передающий ÅÄÖ в значениях, но выходит как некоторые странные символы., –