Pracuję nad projektem, w którym używam Volley jako biblioteki sieciowej. Muszę zapisać tablicę danych do serwera.

Wygląda jak mój kod

for(int i=0;i<data.size();i++)
{
    jsonObjReq.addStringParam("params",data.get(i).getId());
}

A dane na serwerowi dane są pojedyncze dane

Dyspozycja treści: dane formularza; Nazwa = "Params"

5810707039473E73135C9B16.

Jak danych, których chcę, wygląda

Dyspozycja treści: dane formularza; Nazwa = "Params [0]"

5810707039473E73135C9B16.

Dyspozycja treści: dane formularza; Nazwa = "Params [1]"

5810707039473E73135C9B16.

Próbowałem ręcznie utworzyć square brackets za pomocą tego kodu

for(int i=0;i<data.size();i++)
{
    jsonObjReq.addStringParam("params["+i+"]",data.get(i).getId());
}

Ale dane to wygląda

Dyspozycja treści: dane formularza; Imię = "Params% 5B0% 5d"

5810707039473E73135C9B16.

Dyspozycja treści: dane formularza; Imię = "Params% 5B1% 5d"

5810707039473E73135C9B16.

Dlatego nie jest analizowany na serwerze.

Pomóż mi.

0
Pradeep Kumar Kushwaha 15 luty 2017, 16:17

2 odpowiedzi

Najlepsza odpowiedź

Wreszcie po przeczytaniu kodu wewnętrznego biblioteki volley (używałem biblioteki Open Source of volley). Zrozdział ten problem i rozwiązałem go.

Dla innych, którzy są sfrustrowani jak ja:

Idź do com\android\volley\toolbox\multipart\StringPart.java

Przejdź do konstruktora strningpart.java

public StringPart(String name, String value, String charset) 
{
    .
    .
    final String partName = EncodingHelper.encode(name, HTTP.DEFAULT_PROTOCOL_CHARSET);
    .
    .
}

I zmień to do:

public StringPart(String name, String value, String charset) 
{
    .
    .
    final String partName = name;
    .
    .
}

Teraz pracuję, aby utworzyć niestandardową klasę stringarray, aby opublikować dane tablicy, które nie będą wymagać modyfikacji. Jak tylko skończę z tym, opublikuję źródło. Do tego czasu może pomóc.

0
Pradeep Kumar Kushwaha 17 luty 2017, 10:26

Możesz przekazać wszystkie wartości tablicy jako takie jak JSON

[
5810707039473e73135c9b16,
5810707039473e73135c9b16,
5810707039473e73135c9b16
]

Albo możesz przekazać element oddzielony przecinkiem [First_id, Second_id itp.]

5810707039473e73135c9b16,5810707039473e73135c9b16,5810707039473e73135c9b16

A następnie obsługiwać je z twojej strony

0
Ramzy Hassan 15 luty 2017, 13:32