是否可以在Android中将JSONArray作为输入parmater发送?

时间:2017-01-30 05:21:39

标签: android json http-post retrofit2 asynchttpclient

我尝试了VolleyHttpclientAsyncHttpclientRetrofit。未通过Retrofit为JsonArray生成Pojo。当json数组插入具有某个名称的json对象时,将创建Pojo。这意味着Parent需要是JSONObject

当父级为JSONArray时,使用DefaultHttpClient会导致 400错误代码

public static String getHttpResponse(String api_url, HashMap<String,String> headers, JSONArray jsonArray) {
        Log.d(TAG, "getHttpResponse() called with: api_url = [" + api_url + "], headers = [" + headers + "], jsonArray = [" + jsonArray + "]");

        InputStream ist;
        StringBuilder s;
        String wresponse = null;
        try {
            DefaultHttpClient httpclient = new DefaultHttpClient();

            //url with the post data
            HttpPost httpost = new HttpPost(api_url);

            //passes the results to a string builder/entity
            StringEntity se = new StringEntity(jsonArray.toString());

            //sets the post request as the resulting string
            httpost.setEntity(se);
            //sets a request header so the page receving the request
            //will know what to do with it

            for(Map.Entry<String,?> entry : headers.entrySet()){
                Log.d("map values",entry.getKey() + ": " +
                        entry.getValue().toString());
                httpost.setHeader(entry.getKey(), entry.getValue().toString());
            }

            HttpResponse response = httpclient.execute(httpost);
            Log.e(TAG, "getHttpResponse: status code : "+response.getStatusLine().getStatusCode() );
            if (response.getStatusLine().getStatusCode() != 200) {
                 Log.d(TAG, "Server encountered an error");
            }

            HttpEntity resEntity = response.getEntity();
            ist = resEntity.getContent();
            BufferedReader reader;
            reader = new BufferedReader(new InputStreamReader(ist, "UTF-8"));
            String sResponse;
            s = new StringBuilder();
            while ((sResponse = reader.readLine()) != null) {
                s = s.append(sResponse);
            }     
            wresponse = s.toString();
            Log.d(TAG, "getHttpResponse: wresponse : "+wresponse);
        }   catch (Exception e) {
            Log.e(TAG, "getHttpResponse: Exception");
            e.printStackTrace();
        }

        return wresponse;
    }

使用AsyncHttpClient结果套接字异常

public static String uploadAsyncPost(Context con,String api_url, JSONArray jsonArray) {
    public static String uploadAsyncPost(Context con,String api_url, JSONObject jsonArray) {
        Log.d(TAG, "uploadAsyncPost: ");
        SessionManager sm = new SessionManager(con);


         String wresponse = "" ;
        try {

           AsyncHttpClient client = new AsyncHttpClient();
            client.setTimeout(20*1000);
            client.addHeader(AppStrings.RestHeaders.contentType, AppStrings.RestHeaders.applicationJson);
            client.addHeader(AppStrings.RestHeaders.user_agent, AppUtils.getUserAgentHeader(con));
            client.addHeader(AppStrings.RestHeaders.loquace_header_param, sm.getStringData(AppStrings.Session.app_header_value));
            client.addHeader(AppStrings.RestHeaders.app_token_header_param, sm.getStringData(AppStrings.Session.token));



           StringEntity entity = new StringEntity(jsonArray.toString());






            client.post(con, api_url, entity, "application/json",
                    new AsyncHttpResponseHandler() {

                        @Override
                        public void onSuccess(int arg0, Header[] arg1, byte[] arg2) {
                            // TODO Auto-generated method stub
                            Log.e("data", "sucess");
                            Log.d(TAG, "onSuccess() called with: arg0 = [" + arg0 + "], arg1 = [" + arg1 + "], arg2 = [" + arg2 + "]");
                        }

                        @Override
                        public void onFailure(int arg0, Header[] arg1, byte[] arg2, Throwable arg3) {
                            // TODO Auto-generated method stub

                            Log.e("data", "fail");
                            Log.d(TAG, "onFailure() called with: arg0 = [" + arg0 + "], arg1 = [" + arg1 + "], arg2 = [" + arg2 + "], arg3 = [" + arg3 + "]");
                        }
                    } );





        }catch(Exception e){

            e.printStackTrace();

        }
        return wresponse;


    }

0 个答案:

没有答案