передать массив или jsonobject в php url с охттп в андроиде?

Я хочу передать два значения (может быть массив или jsonobject только в фигурных скобках) в веб-сервис php с помощью okhttp в Android, и это похоже на:

  • UserID = «1» & ProductID = { «1», «2», «3»}.

Я знаю, как передать идентификатор пользователя, но я не знаю, как передать значения productid в URL с помощью идентификатора пользователя с помощью okhttp.
Если это дубликат, пожалуйста, дайте мне ссылку, которую я пытался найти, но не нашел соответствующего ответа.
Пожалуйста помоги.
Заранее спасибо.

1

Решение

    //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 () может передавать только строку, вы можете преобразовать все объекты в массив, а затем в строку. Строка в одномерный массив:

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

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]