当前位置: 首页 > 知识库问答 >
问题:

Android截击post请求不工作

沈单弓
2023-03-14

我正在用GoogleVolley Api创建一个android应用程序,它处理我的应用程序和php脚本之间的连接。出于某种原因,该应用程序没有向我的服务器发送任何数据,也许这里的某个人可以找到它?

我的getParams()方法被正确调用,但是当我尝试打印它时,它返回null!一切实际上都在工作,除了数据没有正确传递,我相信,因为我的php脚本抱怨变量为空

public class Server_interaction
{
    String server_url = "http://xxxxxx/update_location.php"; //hidden from you ;)
String response_string;
RequestQueue queue;
Context context;

public Server_interaction(Context context)
{
     this.context = context;
     queue = Server_singleton.getInstance(context).getRequestQueue();
}


public static final String TAG = Server_interaction.class.getSimpleName();

public void post_request(final VolleyCallback callback)
{
    StringRequest stringRequest = new StringRequest(Request.Method.POST, server_url,
            new Response.Listener<String>()
            {
                @Override
                public void onResponse(String response)
                {
                    response_string = response;
                    callback.onSuccess(response_string);
                    //requestQueue.stop();
                    Log.i(TAG, "the response is: "+ response_string);

                }
            }
            , new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error){
                    response_string = "Something went wrong";
                    //error.printstacktrace()
                    //requestQueue.stop();
                    Log.i(TAG, "something went wrong. Is the server up and running?");
                }

            })
    {
        @Override
        protected Map<String, String> getParams() throws AuthFailureError {

            String the_name = "olaf";
            String the_mail = "lalalal";
            String the_country = "Norway";
            String the_latitude = "33";
            String the_longitude = "99";


            Map<String, String> params = new HashMap<String, String>();
            params.put("name", the_name);
            params.put("email", the_mail);
            params.put("country", the_country);
            params.put("latitude", String.valueOf(the_latitude));
            params.put("longitude", String.valueOf(the_longitude));

            Log.i(TAG, "inside getparams : "+ super.getParams());
            return super.getParams();
        }
    };//stringrequest parameter end

    //add request to requestqueue
    Server_singleton.getInstance(context).addToRequestQueue(stringRequest);
    Log.i(TAG, "the response again:: "+ response_string);


}

}

共有2个答案

牟慎之
2023-03-14

试着修改你的代码如下:

  StringRequest stringRequest = new StringRequest(Request.Method.POST, REGISTER_URL, new Response.Listener<String>() {
            @Override
            public void onResponse(String s) {
                Toast.makeText(ReserveProperty.this, s, Toast.LENGTH_SHORT);



            }
        }, new Response.ErrorListener(){

            @Override
            public void onErrorResponse(VolleyError volleyError) {
                Toast.makeText(ReserveProperty.this, volleyError.toString(),Toast.LENGTH_LONG).show();

            }
        }){
            protected Map<String,String> getParams()
            {
                  String the_name = "olaf";
        String the_mail = "lalalal";
        String the_country = "Norway";
        String the_latitude = "33";
        String the_longitude = "99";


        Map<String, String> params = new HashMap<String, String>();
        params.put("name", the_name);
        params.put("email", the_mail);
        params.put("country", the_country);
        params.put("latitude", String.valueOf(the_latitude));
        params.put("longitude", String.valueOf(the_longitude));

                return params;


            }
        };


        Volley.newRequestQueue(this).add(stringRequest);



    }
易自珍
2023-03-14
   Map<String, String> params = new HashMap<String, String>();
    params.put("name", the_name);
    params.put("email", the_mail);
    params.put("country", the_country);
    params.put("latitude", String.valueOf(the_latitude));
    params.put("longitude", String.valueOf(the_longitude));

    Log.i(TAG, "inside getparams : "+ super.getParams());
    return super.getParams();

您添加了所有参数,然后忽略它们并调用super.get参数。要么返回params而不是super.getParams(),要么合并两个结果。因为您的父级只是StringRequest,所以您可以在这里返回参数(StringRequest不会自己添加任何参数)。

 类似资料:
  • 我正在这样做: 但是请求在服务器上不起作用。。。在服务器上,我应该看到发送的数据,但我看不到它们 我也试过这个: 而且它是有效的。。。有什么问题吗?

  • 但当我运行它时,它会给我这个错误: E/AndroidRuntime:致命异常:主进程:com.example.webTestConnection,PID:23550 Android.os.networkonMaintHreadexception,Android.os.strictmode$AndroidBlockGuardPolicy.onNetwork(strictmode.java:1166

  • 我正在使用截击与API交互。我需要向返回JSON数组的服务发送post请求(带参数)。 JsonObjectRequest有一个构造函数,它接受一个方法和一组参数 但是JSONArrayRequest(我需要的一个)只有一个构造函数的形式 我如何才能使其发送包含数据的POST请求?

  • 我正在制作一个Android应用程序,需要发送帖子请求到我的服务器,真的需要一些帮助!我一直试图使用Android Volley提出这些请求。我已经读了很多相关的问题在这里和各种有关Android Volley的文档来源,但当我设法使我的请求,它是不可能的,我收到发布的数据正确的方式在服务器端,我没有线索,我在做什么错误的...我尝试了stringRequest覆盖getParams()和自定义J

  • 当我做POST请求调用使用JsonObjectRequest在凌空然后在某些wifi它是发送空的身体。但是它可以很好地处理StringRequest POST请求。它在所有移动网络上都运行良好。 我正在使用node。js服务器和expressjs/body解析器。当我使用邮递员发出邮件请求时,一切正常。 错误是什么?如果有人想看我能提供的代码。 使用StringRequest的POST请求 POS

  • 这是我用来发出POST请求的一段代码。 在以前的项目中,一切都很好地工作,但现在的问题是,我想在帖子正文中包括布尔值和字符串值。 正文如下:{"email":"username@mail.com","密码":"Somepassword","rememberPassword": false,"ip_address":"152.57.31.41","isCaptchaEn的": false} 我不熟悉