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

在参数中添加数组。Android系统中的截击请求

况嘉运
2023-03-14

我正在使用截击与API交互。我需要向返回JSON数组的服务发送post请求(带参数)。

我的Api代码有这样一个功能:

公共函数添加($tripData){

    $response = "Unsuccessful";
    if (isset($tripData)) {
        //print_r($tripData);
        $tripsModel = new TasksModel();
        $tripsModel->user_id = $tripData["user_id"];
        $tripsModel->date = $tripData["date"];
        $tripsModel->latitude = $tripData["latitude"];
        $tripsModel->longitude = $tripData["longitude"];
        $tripsModel->location = $tripData["location"];
        $tripsModel->notes = $tripData["notes"];
        $tripsModel->trip = $tripData["trip"];
        $tripsModel->city = $tripData["city"];

        $method = new CommonMethods();
        $response = $method->save("locationdetails", $tripsModel);
    }
    echo json_encode($response);
}

我只需要把params放进去。将(“数据”,数据)放入以下类型的数组中:

$taskData["user_id"]=2;
$tripData["date"]="2015-06-02 16:01";
$tripData["latitude"]="41.213181";
$tripData["longitude"]="-124.004631";
$tripData["location"]="Redwood National";
$tripData["notes"]="hello";
$tripData["trip"]=3;
$tripData["city"]="California";

所以它可以用作:$obj=new Myclass;$var=$ob-

自动生成方法存根

    // Tag used to cancel the request
    String tag_string_req = "req_login";

    StringRequest strReq = new StringRequest(Method.POST,
            AppConfig.URL_REGISTER, new Response.Listener<String>() {

                @Override
                public void onResponse(String response) {
                    Log.d("inserttrip",
                            "inserttrip Response: " + response.toString());

                    try {
                        JSONObject jObj = new JSONObject(response);
                        boolean error = jObj.getBoolean("error");

                        // Check for error node in json
                        if (!error) {
                            // user successfully logged in
                            // Create login session

                            // Launch main activity
                            Toast.makeText(getApplicationContext(),
                                    "user data inserted", Toast.LENGTH_LONG)
                                    .show();
                        } else {
                            // Error in login. Get the error message
                            String errorMsg = jObj.getString("error_msg");
                            // String errorMsg =
                            // "Please check your network connection";
                            Toast.makeText(getApplicationContext(),
                                    errorMsg, Toast.LENGTH_LONG).show();
                        }
                    } catch (JSONException e) {
                        // JSON error
                        e.printStackTrace();
                    }

                }
            }, new Response.ErrorListener() {

                @Override
                public void onErrorResponse(VolleyError error) {
                    Log.e("insertTripError",
                            "Data Error: " + error.getMessage());
                    String errorMsg = "Please check your network connection";
                    Toast.makeText(getApplicationContext(), errorMsg,
                            Toast.LENGTH_LONG).show();

                }
            }) {

        @Override
        protected HashMap<String, String> getParams() {
            // Posting parameters to login url
            JSONObject jsonObject = new JSONObject();
            for (int i = 0; i <= tripData.length; i++) {
                tripData[i] = "questionId_" + i + "_" + "ans_" + i;
                try {
                    jsonObject.put("params_" + i, tripData[i]);

                } catch (JSONException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            String data= jsonObject.toString();
            HashMap<String, String> params = new HashMap<String, String>();
            params.put("tag", "trip");
            params.put("action", "add");
            params.put("data", data);

            return params;
        }

    };

    // Adding request to request queue
    AppController.getInstance().addToRequestQueue(strReq, tag_string_req);

}

共有1个答案

桑坚成
2023-03-14

你说,在你的logcat中得到“ArrayIndexOutOfBound”错误。

可能是getParams()方法的问题。

将for循环更改为:

for (int i = 0; i <= tripData.length; i++) 

到:

for (int i = 0; i < tripData.length; i++)

现在检查,如果您有任何其他问题,请在此处显示您的日志,。

 类似资料:
  • 问题内容: 我有一个尝试发送的HTTP GET请求。我尝试通过首先创建一个对象并将参数添加到该对象,然后调用我的对象,来将参数添加到此请求中。此方法失败。但是,如果我手动将参数添加到URL中(即append ),它将成功。 我知道我在这里缺少任何东西,任何帮助将不胜感激。 问题答案: 我使用NameValuePair和URLEncodedUtils列表创建所需的url字符串。

  • 用简单的话来说,我想发送这个数据到服务器,使用Volley Post Request。 它有一个整数和一个字符串,我得到的响应是Jsonarray 我尝试过以下方法,但都不管用 > 因为它是json数组请求,我不能在参数中发送数据,因为第三个参数只需要JsonArray,我必须发送JsonObject,所以保持为null 我不能把它放在中,因为值的1是整数,并且它只接受字符串 getparams(

  • 我正在使用Spring微服务构建微服务,我有两个相关的问题。 1。我在Api网关(即Zuul服务器)中有Spring安全性,现在Zuul不会转发任何请求,如果我已经从流中读取请求一次以身份验证(从POST请求中获取用户名/通行证) 如何读取请求,然后再次将相同的请求转发给下游服务? 2.Zuul没有转发request.set属性()到下游服务,所以一个解决办法是使用ctx.addZuulask e

  • 我看了关于截击的Google IO 2013课程,我正在考虑改用截击。Volley是否支持向请求添加POST/GET参数?如果是,我怎么做?

  • 我已经管理了add头,但没有管理Params。

  • 我在API中传递一个数组作为get请求的参数。我想把这个数组作为查询参数传递给HTTP请求者。 param1和param2通过流变量捕获,并与HTTP请求程序一起发送 对param3使用flow变量可以用其他内容覆盖中断