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

如何使用指定参数的Android截取方法?

柯正谊
2023-03-14

我知道如何使用Volley GET方法进行登录,但如果我需要指定一个特定的“id”,该怎么办?我使用intent将列表项的“id”从远程数据库传递给另一个活动。putExtra。在下一个活动中,我将如何利用凌空的GET方法来解析和显示另一个表中使用传递的“id”的数据?

在浏览器中,我可以使用以下内容获得具有指定url和参数的响应:

http://localhost/demoapp/fetch.php?pid=2

但是我不知道如何将该url传递给Volley请求并在listview中显示响应。类似于这样:

"http://localhost/demoapp/fetch.php?pid=" + pid

其中“pid”将是相应id的传递字符串。

编辑:PHP代码

    <?php
include_once("config.php");

$query=mysqli_query($con,"SELECT * FROM comments WHERE pid=".$_GET['pid']);

$array;
while($result=mysqli_fetch_assoc($query)){

$array[]=$result;
}

echo json_encode($array);
?>

编辑2:JAVA代码主活动

    JsonArrayRequest request = new JsonArrayRequest(url+url_file,
                new Response.Listener<JSONArray>() {
                    @Override
                    public void onResponse(JSONArray response) {
                        Log.d(TAG, response.toString()); try {
                            for(int i=0;i<response.length();i++){
                                String pid=response.getJSONObject(i).getString("pid");
                                String name=response.getJSONObject(i).getString("product_name");
                                String img;
                                String thumb = response.getJSONObject(i).getString("product_thumb");
                                String detail = response.getJSONObject(i).getString("product_detail");
                                String rating = response.getJSONObject(i).getString("product_rating");

                                img = response.getJSONObject(i).getString("product_pic");

                                rowdata.add(new ProductRowData(pid,name,img,thumb,detail,rating));
                            }
                        } catch (JSONException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                        adapter=new ProductsAdapter(MainActivity.this, rowdata);
                        list.setAdapter(adapter);
                        dialog.dismiss();
                    }
                }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                Log.d(TAG, "Error: " + error.getMessage());
                dialog.dismiss();
            }
        });

        VolleyController.getInstance().addToRequestQueue(request, tag_json_arry);

单击列表项时,其余数据将使用intent传递给详细活动。putExtra。然后我试着做的是,在点击FAB时,应该显示一个来自不同表的评论列表,其中包含产品id。

共有2个答案

终彬郁
2023-03-14
        @Override
        protected Map<String, String> getParams() {
            HashMap<String,String> params = new HashMap<>();
            params.put("deviseType","1");
            params.put("langId","1");
            params.put("userType","2");
            return params;
        }
蒋芷阳
2023-03-14

如果要使用GET,可以使用url参数创建请求

String uri = String.format("http://localhost/demoapp/fetch.php?pid=%1$s", pid);

StringRequest myReq = new StringRequest(Method.GET,
                                    uri,
                                    createMyReqSuccessListener(),
                                    createMyReqErrorListener());

或者更好,你可以使用POST:

StringRequest stringRequest = new StringRequest(Request.Method.POST, "http://localhost/demoapp/fetch.php", new Response.Listener<String>()
{
    @Override
    public void onResponse(String s)
    {
    }
}, new Response.ErrorListener()
{
    @Override
    public void onErrorResponse(VolleyError volleyError)
    {
    }
})
{
    @Override
    protected Map<String, String> getParams()
    {
        Map<String, String> params = new HashMap<String, String>();
        params.put("id", pid);
        return params;
    }
};

摘自:截击-POST/GET参数

 类似资料:
  • 我想截获名为methodA的方法,其中一个参数的类型是String as blow,我应该怎么做。如何使用hasParameters()api?

  • 问题内容: 我正在扩展一个类并覆盖一个方法。我要做的只是调用super,但是调用了一个经过修改的参数,该参数被其方法之一拦截。一个例子使它更加清楚: 我宁愿使用不需要自己的编译器的工具。最佳选择是什么? 问题答案: 鉴于这是一个接口,您可以考虑使用动态代理,该代理将: 包装原始foo 拦截所有消息并将其转发给原始foo 上面的链接中有一个完整的示例。这只是想法: 请注意,如果不是接口,您仍可以手动

  • 问题内容: 我有一个C#/ Selenium / Specflow测试套件,正在使用xunit.console.exe使用Jenkins运行。我需要将这些测试指向不同的环境(Test / QA / Prod等),并想使用命令行参数。 我正在调用的批处理命令是: 并希望包含一个额外的参数,例如: “ -env = PROD”, 以将该作业指向特定的环境。 我愿意采取更好的方法。 问题答案: 对于此解

  • 我想截屏Selenium中的一个元素,根据文档,每个WebElement都有一个功能: 截图(文件名) 将当前元素的屏幕截图保存到PNG图像文件。如果有任何IOError,则返回False,否则返回True。在文件名中使用完整路径。 Args:filename:您希望将屏幕截图保存到的完整路径。这应该以一个简单的结尾。png扩展 用法:元素。截图(“/Screenshots/foo.png”) 但

  • 问题内容: 我有一个用Java编写的小项目,我需要用C#重写它。 差不多完成了,但是我仍然坚持使用Selenium Webdriver获取element的屏幕截图。我是通过Java用以下方式完成的: 它在Java中完美地工作,但是我不知道如何用C#重写它,因为我不太熟悉它。 有人可以提出一些不错的方法来在C#中实现相同的目的吗? 问题答案: 在这里,我编写了一些代码以使用C#拍摄Element的屏

  • 问题内容: 我的目标是获取具有特定参数的最新Jenkins职位(职位名称hanna)。 我这样做的唯一原因是Jenkins从脚本触发时不返回内部版本号,因此我必须传递一个参数,但稍后必须能够对该参数进行查询。 现在我有Rigth,它不返回构建ID: 我得到这样的工作清单: 这不完全是我想要的,因为我也想使用参数来完成作业hanna的最新实例,该返回也将返回,而且我也无法弄清楚Jenkins上存储的