diff options
Diffstat (limited to 'src/main/java/com/squareup/okhttp/internal/http/RawHeaders.java')
-rw-r--r-- | src/main/java/com/squareup/okhttp/internal/http/RawHeaders.java | 36 |
1 files changed, 16 insertions, 20 deletions
diff --git a/src/main/java/com/squareup/okhttp/internal/http/RawHeaders.java b/src/main/java/com/squareup/okhttp/internal/http/RawHeaders.java index e5abd2c..e1fdcf4 100644 --- a/src/main/java/com/squareup/okhttp/internal/http/RawHeaders.java +++ b/src/main/java/com/squareup/okhttp/internal/http/RawHeaders.java @@ -123,23 +123,6 @@ public final class RawHeaders { this.httpMinorVersion = httpMinorVersion; } - public void computeResponseStatusLineFromSpdyHeaders() throws IOException { - String status = null; - String version = null; - for (int i = 0; i < namesAndValues.size(); i += 2) { - String name = namesAndValues.get(i); - if (":status".equals(name)) { - status = namesAndValues.get(i + 1); - } else if (":version".equals(name)) { - version = namesAndValues.get(i + 1); - } - } - if (status == null || version == null) { - throw new ProtocolException("Expected ':status' and ':version' headers not present"); - } - setStatusLine(version + " " + status); - } - /** * @param method like "GET", "POST", "HEAD", etc. * @param path like "/foo/bar.html" @@ -425,10 +408,13 @@ public final class RawHeaders { return result; } - public static RawHeaders fromNameValueBlock(List<String> nameValueBlock) { + /** Returns headers for a name value block containing a SPDY response. */ + public static RawHeaders fromNameValueBlock(List<String> nameValueBlock) throws IOException { if (nameValueBlock.size() % 2 != 0) { throw new IllegalArgumentException("Unexpected name value block: " + nameValueBlock); } + String status = null; + String version = null; RawHeaders result = new RawHeaders(); for (int i = 0; i < nameValueBlock.size(); i += 2) { String name = nameValueBlock.get(i); @@ -438,11 +424,21 @@ public final class RawHeaders { if (end == -1) { end = values.length(); } - result.namesAndValues.add(name); - result.namesAndValues.add(values.substring(start, end)); + String value = values.substring(start, end); + if (":status".equals(name)) { + status = value; + } else if (":version".equals(name)) { + version = value; + } else { + result.namesAndValues.add(name); + result.namesAndValues.add(value); + } start = end + 1; } } + if (status == null) throw new ProtocolException("Expected ':status' header not present"); + if (version == null) throw new ProtocolException("Expected ':version' header not present"); + result.setStatusLine(version + " " + status); return result; } } |