Я хочу передать два значения (может быть массив или jsonobject только в фигурных скобках) в веб-сервис php с помощью okhttp в Android, и это похоже на:
Я знаю, как передать идентификатор пользователя, но я не знаю, как передать значения productid в URL с помощью идентификатора пользователя с помощью okhttp.
Если это дубликат, пожалуйста, дайте мне ссылку, которую я пытался найти, но не нашел соответствующего ответа.
Пожалуйста помоги.
Заранее спасибо.
//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();
Учитывая, что вы хотите передать только один параметр, а метод .add () может передавать только строку, вы можете преобразовать все объекты в массив, а затем в строку. Строка в одномерный массив:
<?php
$productidstring = $_POST['productid'];
$productid = StringToArray($productidstring);
function StringToArray($productidstring)
{
$productidstringtmp = str_replace("[","",$productidstring);
$productidstringtmp = str_replace("]","",$productidstring);
$productidarray = explode(",",$productidstringtmp);
return $productidarray;
}
?>
Других решений пока нет …