我有一个 Android 应用程序,它通过 Web 服务连接到我的 ASP.NET WebApi 服务器。我使用 AsyncHttpClient
发送请求,使用 RequestParams
将参数传递给服务器。现在我想将一个包含其他复杂对象列表的复杂对象发送到我的服务器,这就是问题所在。我该怎么做?对于简单类型,这很容易,因为我只需要多次调用 parameter.add("paramname", paramvalue);
相同的参数名称,并在服务器端收到一个列表.但是,当我的列表具有复杂类型以便我在服务器上收到包含这些复杂类型的列表时,调用应该是什么样子的?
假设我有一本包含作者列表的书:
class Book {
string title;
int year;
List<Authors> authors;
}
class Author {
string name;
int age;
}
我应该如何使用请求参数将一本书(包括作者)传递到我的服务器(假设服务器上的数据类看起来相同)?
我差点忘了服务器接受 JSON 作为格式。
谢谢
最佳答案
- 首先,您需要在您的 android 项目中声明书籍和作者 (POJO)。
然后您需要将您的复杂对象转换为 json 对象(您可以手动完成或使用 GSON Libary)
Gson gson = new Gson(); String jsonString = gson.toJson(myBook); JSONObject bookJsonObj = new JSONObject(); try { bookJsonObj = new JSONObject(jsonString); } catch (JSONException e) { e.printStackTrace(); }
然后您可以使用像 Google Volley 这样的库将您的请求发布到服务器:
JsonObjectRequest myJsonRequest = new JsonObjectRequest(Request.Method.POST, ACTION_METHOD_URL, bookJsonObj , new Response.Listener<JSONObject>() { @Override public void onResponse(JSONObject jObj) { } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { } }); volleySingleton.addToRequestQueue(myJsonRequest, MY_REQUEST_TAG);
最后在您的 api Controller 中为请求添加 Action 方法
public IHttpActionResult YourActionMethod(Book book) { // do your request action here }
编辑:要通过 AsyncHttpClient 发布 JSON,请使用:
StringEntity entity = new StringEntity(bookJsonObj.toString());
client.post(context, ACTION_METHOD_URL, entity, "application/json",
responseHandler)
关于带有 ASP.NET WebAPI 服务器的 Android 应用程序 - 发送复杂类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32852862/