当前位置: 首页 > 面试题库 >

如何在Android中使用Volley将JSON对象发送到服务器

邹胜泫
2023-03-14
问题内容

我想使用POST方法将JSONObject发送到服务器。我已经使用凌空库通过字符串参数来正常工作,但是如果我尝试使用json对象,则在调用json对象时显示错误,这是我的代码

    private void makeJsonObjReq() {
    showProgressDialog();
    JsonObjectRequest jsonObjReq = new JsonObjectRequest(Method.POST,
            Const.URL_LOGIN, null,
            new Response.Listener<JSONObject>() {

                @Override
                public void onResponse(JSONObject response) {
                    Log.d(TAG, response.toString());
                    msgResponse.setText(response.toString());
                    hideProgressDialog();
                }
            }, new Response.ErrorListener() {

                @Override
                public void onErrorResponse(VolleyError error) {
                    VolleyLog.d(TAG, "Error: " + error.getMessage());
                    hideProgressDialog();
                }
            }) {

        /**
         * Passing some request headers
         * */
        @Override
        public Map<String, String> getHeaders() throws AuthFailureError {
            HashMap<String, String> headers = new HashMap<String, String>();
            headers.put("Content-Type", "application/json; charset=utf-8");
            return headers;
        }

        @Override
        protected Map<String, String> getParams() {
            Map<String, String> params = new HashMap<String, String>();
            params.put("un", "xyz@gmail.com");
            params.put("p", "somepasswordhere");
            return params;
        }

    };

    // Adding request to request queue
    AppController.getInstance().addToRequestQueue(jsonObjReq,tag_json_obj);

    // Cancelling request
    // ApplicationController.getInstance().getRequestQueue().cancelAll(tag_json_obj);       
}

我的错误表单服务器是: [10031] BasicNetwork.performRequest: Unexpected response code 401

如何解决这个问题呢。我要添加application/json;charset=utf-8 标题,请检查我的代码是否正确。请给我一个解决这个问题的建议


问题答案:

JsonObjectRequest中的第三个参数用于以jsonobject形式传递发布参数。对于标题,您需要发送两个单独的值,一个用于内容类型,一个用于字符集。

  RequestQueue queue = Volley.newRequestQueue(this);

  private void makeJsonObjReq() {
    showProgressDialog();


            Map<String, String> postParam= new HashMap<String, String>();
            postParam.put("un", "xyz@gmail.com");
            postParam.put("p", "somepasswordhere");


    JsonObjectRequest jsonObjReq = new JsonObjectRequest(Method.POST,
            Const.URL_LOGIN, new JSONObject(postParam),
            new Response.Listener<JSONObject>() {

                @Override
                public void onResponse(JSONObject response) {
                    Log.d(TAG, response.toString());
                    msgResponse.setText(response.toString());
                    hideProgressDialog();
                }
            }, new Response.ErrorListener() {

                @Override
                public void onErrorResponse(VolleyError error) {
                    VolleyLog.d(TAG, "Error: " + error.getMessage());
                    hideProgressDialog();
                }
            }) {

        /**
         * Passing some request headers
         * */
        @Override
        public Map<String, String> getHeaders() throws AuthFailureError {
            HashMap<String, String> headers = new HashMap<String, String>();
            headers.put("Content-Type", "application/json; charset=utf-8");
            return headers;
        }



    };

    jsonObjReq.setTag(TAG);
    // Adding request to request queue
    queue.add(jsonObjReq);

    // Cancelling request
    /* if (queue!= null) {
    queue.cancelAll(TAG);
    } */

}


 类似资料:
  • 资源 ComplexObject类只是一个带有字符串的类。当我点击URL:http://localhost:8080/simple-service-webapp/webapi/myresource/This work时,我得到的是“get it!” 但是当我点击:http://localhost:8080/simple-service-webapp/webapi/myresource/comple

  • 问题内容: 关于如何将对象从我的android应用程序发送到数据库,我 有点茫然 由于我是新手,所以我不太确定哪里出了问题,我从中提取了数据,我不知道如何将对象发布到我们的服务器。 任何建议将不胜感激 问题答案: 您需要使用一个类与服务器进行通信。像这样: 这是您的方法。 这是您的活动课程中的新课程。 这行:将其作为HTTP POST请求,应在您的服务器上作为POST请求处理。 然后,在服务器上,

  • 问题内容: 我想通过齐射库 {“ user_id”:12,“ answers”:{“ 11”:3,“ 12”:4,“ 13”:5}}* 将以下格式的jsonobject发送到服务器 * 如果我想使用 StringRequest, 如何使用POST方法将此JsonObject发送到服务器 问题答案: 您可以使用以下工作示例代码。我测试过了 希望这可以帮助! 更新: 要创建JSONObject作为您的

  • 问题内容: 我正在尝试在本地网络上的Android应用程序与WampServer之间建立通信。 当我想从服务器读取数据时,我已经成功了,但是当我尝试将数据发送到服务器时却遇到了问题。 我正在使用服务来建立通信: } 和我的PHP文件: 当我运行我的应用程序时,没有任何内容添加到我的数据库中。我认为里面没有东西。 请告诉我我的代码有什么问题? 问题答案: 最后,我成功将JSONObject发送到服务

  • 问题内容: 我有一个REST Web服务配置如下: 我的Tomcat服务器的配置如下: 我创建的POJO如下所示: } 我创建一个测试客户端以测试createUser方法: 但是我收到以下错误: 奇怪的是,当我将所有内容更改为appliction / xml时,它都能正常工作 知道为什么Json不能为我工作吗? 问题答案: 您正在执行: 这是不对的。您应该将真实的JSON字符串发送到您的服务。 获

  • 问题内容: 我正在寻找通过GET将JSON对象发送到服务器。克里斯关于通过JSON将对象数组发布到ASP.Net MVC3的答案适用于httpPOST,但不适用于GET。我的情况也适用于POST,但不适用于GET。如何使GET工作正常这是我的情况:在Controller中,我有以下方法publicActionResult Screenreport(Screentable screendata) 我