我想通过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/