आपको पहली चीज़ की आवश्यकता है BasicNetwork.convertHeaders विधि को कई मानचित्र मानों का समर्थन करने के लिए संशोधित करना है।
protected static Map<String, List<String>> convertHeaders(Header[] headers) {
Map<String, List<String>> result = new TreeMap<String, List<String>>(String.CASE_INSENSITIVE_ORDER);
for (int i = 0; i < headers.length; i++) {
Header header = headers[i];
List<String> list = result.get(header.getName());
if (list == null) {
list = new ArrayList<String>(1);
list.add(header.getValue());
result.put(header.getName(), list);
}
else list.add(header.getValue());
}
return result;
}
अगला बात आप की जरूरत DiskBasedCache.writeStringStringMap और DiskBasedCache.readStringStringMap तरीकों को संशोधित करने के लिए है: यहाँ संशोधित विधि का उदाहरण है। उन्हें कई मूल्यों का समर्थन करना चाहिए। यहाँ सहायक तरीकों के साथ-साथ पद्धति में सुधार किया जाता है:
static void writeStringStringMap(Map<String, List<String>> map, OutputStream os) throws IOException {
if (map != null) {
writeInt(os, map.size());
for (Map.Entry<String, List<String>> entry : map.entrySet()) {
writeString(os, entry.getKey());
writeString(os, joinStringsList(entry.getValue()));
}
} else {
writeInt(os, 0);
}
}
static Map<String, List<String>> readStringStringMap(InputStream is) throws IOException {
int size = readInt(is);
Map<String, List<String>> result = (size == 0)
? Collections.<String, List<String>>emptyMap()
: new HashMap<String, List<String>>(size);
for (int i = 0; i < size; i++) {
String key = readString(is).intern();
String value = readString(is).intern();
result.put(key, parseNullStringsList(value));
}
return result;
}
static List<String> parseNullStringsList(String str) {
String[] strs = str.split("\0");
return Arrays.asList(strs);
}
static String joinStringsList(List<String> list) {
StringBuilder ret = new StringBuilder();
boolean first = true;
for (String str : list) {
if (first) first = false;
else ret.append("\0");
ret.append(str);
}
return ret.toString();
}
और अंत में HttpHeaderParser वर्ग है। आपको parseCacheHeaders विधि एकाधिक मानों का समर्थन करना चाहिए। इस के लिए निम्नलिखित सहायक विधि का उपयोग करें:
public static String getHeaderValue(List<String> list) {
if ((list == null) || list.isEmpty()) return null;
return list.get(0);
}
और नवीनतम बात को संशोधित करने के स्थानों का एक समूह को बदलने के लिए
Map<String, String>
को
Map<String, List<String>>
यह करने के लिए अपने आईडीई का उपयोग है।
स्रोत
2015-03-11 10:33:58
बस इसे स्वयं देखें, यह Google से हास्यास्पद है। यह स्पष्ट है कि यह पुस्तकालय बहुत हल्के सामान के लिए है। – georgiecasey
एंड्रॉइड वॉली के साथ कोई समस्या नहीं है। यह वेब सर्वर की एक समस्या है। सेट-कुकी एकाधिक नहीं हो सकता है। http://stackoverflow.com/questions/11533867/set-cookie-header-with-multiple-cookies –
http://stackoverflow.com/a/25388897/2819864 सबसे तेज़ समाधान – RominaV