Android Volley将json数据发布到服务器

时间:2017-06-24 04:18:54

标签: java android json webserver android-volley

我是Java新手。我想将post json数据发送到webserver。 我的排球发布如下。

public void postData(String url,JSONObject data,final VolleyCallback mResultCallback){
    RequestQueue requstQueue = Volley.newRequestQueue(mContext);

    JsonObjectRequest jsonobj = new JsonObjectRequest(Request.Method.POST, url,null,
            new Response.Listener<JSONObject>() {
                @Override
                public void onResponse(JSONObject response) {
                    if(mResultCallback != null){
                        mResultCallback.notifySuccess(response);
                    }
                }
            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    if(mResultCallback != null){
                        mResultCallback.notifyError(error);
                    }
                }
            }
    ){
      //here I want to post data to sever
    };
    requstQueue.add(jsonobj);

}

这是我的MainActivity代码

JSONObject data = null;
            try {
                String datas = "{'email': email,'password': password}";
                data = new JSONObject(datas);
            }catch (JSONException e){
                e.printStackTrace();
            }
String url = "http://example.com";

我想将JSON数据发布到PostData方法。 如何将此json数据发布到我的服务器?

3 个答案:

答案 0 :(得分:5)

public function indexAction(Request $request) {

    if ($request->isMethod('POST')) {

        $semester = $request->get('smt');
        $request->getSession()->set('semester', $semester);//generate an error: same with  $this->get('session')->set('semester', $semester)
        return $this->redirect($this->generateUrl('httc_enrollment_registration'));
    }

    $f = $request->get('update');

    if ($f == 1) {
        $request->getSession()->set('update_formb', 1);//generate and error: same with $this->get('session')->set('update_formb', 1);
    } else {
        $this->get('session')->set('update_formb', 0); //generate the same error
    }

  return $this->render('HTTCEnrollmentBundle:Enrollment:index.html.twig');

}

现在,来自你的mainActiviy类

    public void postData(String url,Hashmap data,final VolleyCallback mResultCallback){
        RequestQueue requstQueue = Volley.newRequestQueue(mContext);

        JsonObjectRequest jsonobj = new JsonObjectRequest(Request.Method.POST, url,new JSONObject(data),
                new Response.Listener<JSONObject>() {
                    @Override
                    public void onResponse(JSONObject response) {
                        if(mResultCallback != null){
                            mResultCallback.notifySuccess(response);
                        }
                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        if(mResultCallback != null){
                            mResultCallback.notifyError(error);
                        }
                    }
                }
        ){
          //here I want to post data to sever
        };
        requstQueue.add(jsonobj);

    }

答案 1 :(得分:2)

public void postData(String url,JSONObject data,final VolleyCallback mResultCallback){
RequestQueue requstQueue = Volley.newRequestQueue(mContext);

JsonObjectRequest jsonobj = new JsonObjectRequest(Request.Method.POST, url,data,
        new Response.Listener<JSONObject>() {
            @Override
            public void onResponse(JSONObject response) {
                if(mResultCallback != null){
                    mResultCallback.notifySuccess(response);
                }
            }
        },
        new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                if(mResultCallback != null){
                    mResultCallback.notifyError(error);
                }
            }
        }
);
requstQueue.add(jsonobj);

}

答案 2 :(得分:0)

public void postData(String url,final JSONObject data,final VolleyCallback mResultCallback){
    RequestQueue requstQueue = Volley.newRequestQueue(mContext);

    JsonObjectRequest jsonobj = new JsonObjectRequest(Request.Method.POST, url,null,
            new Response.Listener<JSONObject>() {
                @Override
                public void onResponse(JSONObject response) {
                    if(mResultCallback != null){
                        mResultCallback.notifySuccess(response);
                    }
                }
            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    if(mResultCallback != null){
                        mResultCallback.notifyError(error);
                    }
                }
            }
    ){
       @Override
            protected Map<String, String> getParams() {
                Map<String, String> params = new HashMap<String, String>();
                if(data != null){
                    Iterator<String> keysItr = data.keys();
                    while(keysItr.hasNext()) {
                            String key = keysItr.next();
                            Object value = data.get(key);

                            if(value instanceof JSONArray) {
                                value = toList((JSONArray) value);
                            }

                            else if(value instanceof JSONObject) {
                                value = toMap((JSONObject) value);
                            }
                            params.put(key, value);
                        }
                } 
                return params;
            }
    };
    requstQueue.add(jsonobj);

这是我的工作代码

希望这对你有用..

Happy Codding