php - 在android中使用okhttp将数组或jsonobject传递给php url?

标签 php android json web-services okhttp

我想通过android中的okhttp将两个值(可以是数组或仅大括号中的jsonobject)传递给php webservice,如下所示:

  • userid="1"& Productid={"1","2","3"}。

我知道如何传递 userid,但我不知道如何通过 okhttp 将productid 值传递到带有 userid 的 url。 如果重复,请给我链接,我已尝试搜索但没有找到任何相关答案。 请帮忙。 提前致谢。

最佳答案

    //Convert your object to an array
    FormBody.Builder formBuilder = new FormBody.Builder();
        for(int x=0; x<array.length; x++)
        {
            String val = (String) array[x];
            formBuilder.add("productid["+x+"]",val);
        } 
        RequestBody body = formBuilder.build();

        Request request = new Request.Builder()
                .url(YOUR_URL)
                .post(body)
                .build();

注意:如果你想要自定义索引而不是数字数组,在 php 数组中可以通过非数字索引进行索引,这样你就可以使用非数字索引循环任何类型的变量 - 选项 1(示例遵循上一条注释):

FormBody.Builder formBuilder = new FormBody.Builder();
//Check if object is HashMap
if(object instanceof HashMap)
{
   for(Entry<String, String> e : m.entrySet()) {
      String key = e.getKey();
      String val = e.getValue();
      formBuilder.add("productid["+key+"]",val);
   }  
} else if(object instanceof Array) {
   for(int x=0; x<array.length; x++)
   {
      String val = (String) array[x];
      formBuilder.add("productid["+x+"]",val);
   }
}
RequestBody body = formBuilder.build();
Request request = new Request.Builder()
.url(YOUR_URL)
.post(body)
.build();
  • 选项 2(对我来说不好的做法)

考虑到你只想传递一个参数,而.add()方法只能传递String,你可以将所有对象转换为Array,然后再转换为String。字符串转一维数组:

<?php
 $productidstring = $_POST['productid'];
 $productid = StringToArray($productidstring);
 function StringToArray($productidstring)
 {
       $productidstringtmp = str_replace("[","",$productidstring);
       $productidstringtmp = str_replace("]","",$productidstring);
       $productidarray = explode(",",$productidstringtmp);
       return $productidarray;
 }
?>

关于php - 在android中使用okhttp将数组或jsonobject传递给php url?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43832877/

相关文章:

php - 堆栈溢出调用堆栈#timememoryfunctionlocation 10.0000143728

json - 基于命名空间嵌套和合并 JSON

java - JSON - 使用 Gson 反序列化动态对象

php - Guzzle - 如何设置 json 标题?

php - 从不同的表中获取并添加下拉菜单

android - Android 中的图像过滤器库

android - 什么触发(或生成)KeyEvent.ACTION_MULTIPLE?

json - 使用 jq 将 JSON 值提取到 shell 变量

php - 使用 AJAX 将复选框值(如果未选中则为 0)传递给 PHP

Android 3.2 从操作栏中删除标题