Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有ASP.NET WebAPi服务器的Android应用程序-发送复杂类型_Android_Json_Rest_Asp.net Web Api_Http Request Parameters - Fatal编程技术网

带有ASP.NET WebAPi服务器的Android应用程序-发送复杂类型

带有ASP.NET WebAPi服务器的Android应用程序-发送复杂类型,android,json,rest,asp.net-web-api,http-request-parameters,Android,Json,Rest,Asp.net Web Api,Http Request Parameters,我有一个Android应用程序,它通过Web服务与我的ASP.NET WebApi服务器连接。对于发送请求,我使用的是AsyncHttpClient,对于向服务器传递参数,我使用的是RequestParams。现在我想将一个包含其他复杂对象列表的复杂对象发送到我的服务器,这就是问题所在。我该怎么做?对于简单类型,这非常简单,因为我只需要调用parameter.add(“paramname”,paramvalue)操作,在服务器端我收到一个列表。但是,当我的列表具有复杂类型,因此我在服务器上收到包

我有一个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库进行转换)

  • 然后,您可以使用类似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);
    
  • 编辑:要通过AsyncHttpClient发布JSON,请使用以下命令:

        StringEntity entity = new StringEntity(bookJsonObj.toString());
        client.post(context, ACTION_METHOD_URL, entity, "application/json",
                responseHandler)
    

    正如我所说,我正在使用AsyncHttpClient和Requestparams向请求添加参数。为了使用您的解决方案,我必须切换我的库。我想知道是否有可能在我的库中实现同样的效果
    public IHttpActionResult YourActionMethod(Book book)    
    {
        // do your request action here
    }
    
        StringEntity entity = new StringEntity(bookJsonObj.toString());
        client.post(context, ACTION_METHOD_URL, entity, "application/json",
                responseHandler)