in src/main/java/com/twitter/whiskey/net/SpdyStream.java [219:239]
Headers getCanonicalHeaders() {
Headers canonical = new Headers(request.getHeaders());
URL url = request.getUrl();
String path = url.getPath();
// Though RFC-3986 allows path to be empty, most user agents will send
// a trailing slash in lieu of an empty path, and Twitter seems to
// require it.
if (path.length() == 0) path = "/";
String query = url.getQuery();
String fragment = url.getRef();
String fullPath = path
+ (query != null ? "?" + query : "")
+ (fragment != null ? "#" + fragment : "");
canonical.put(":path", fullPath);
canonical.put(":method", request.getMethod().toString());
canonical.put(":version", "HTTP/1.1");
canonical.put(":host", url.getHost());
canonical.put(":scheme", url.getProtocol());
return canonical;
}