void LoadWwwForm() { var key = StringBuilderCache.Allocate(); var value = StringBuilderCacheAlt.Allocate(); try { using (Stream input = GetSubStream(InputStream)) using (StreamReader s = new StreamReader(input, ContentEncoding)) { int c; while ((c = s.Read()) != -1) { if (c == '=') { value.Length = 0; while ((c = s.Read()) != -1) { if (c == '&') { AddRawKeyValue(key, value); break; } else { value.Append((char)c); } } if (c == -1) { AddRawKeyValue(key, value); return; } } else if (c == '&') { AddRawKeyValue(key, value); } else { key.Append((char)c); } } if (c == -1) { AddRawKeyValue(key, value); } EndSubStream(input); } } finally { StringBuilderCache.Free(key); StringBuilderCacheAlt.Free(value); } }