@Override public GoogleUrl clone() { return (GoogleUrl) super.clone(); }
/** * Authenticates based on the provided field values. * * @throws HttpResponseException if the authentication response has an error code, such as for a * CAPTCHA challenge. Call {@link HttpResponseException#response exception.response}. * {@link HttpResponse#parseAs(Class) parseAs}({@link ClientLogin.ErrorInfo * ClientLoginAuthenticator.ErrorInfo}.class) to parse the response. * @throws IOException some other kind of I/O exception */ public Response authenticate() throws HttpResponseException, IOException { GenericUrl url = serverUrl.clone(); url.appendRawPath("/accounts/ClientLogin"); UrlEncodedContent content = new UrlEncodedContent(); content.data = this; HttpRequest request = transport.createRequestFactory().buildPostRequest(url, content); request.addParser(AuthKeyValueParser.INSTANCE); request.disableContentLogging = true; return request.execute().parseAs(Response.class); } }
public void intercept(HttpRequest request) throws IOException { if (overrideThisMethod(request)) { String requestMethod = request.getRequestMethod(); request.setRequestMethod(HttpMethods.POST); request.getHeaders().set(HEADER, requestMethod); if (requestMethod.equals(HttpMethods.GET)) { // take the URI query part and put it into the HTTP body request.setContent(new UrlEncodedContent(request.getUrl().clone())); // remove query parameters from URI request.getUrl().clear(); } else if (request.getContent() == null) { // Google servers will fail to process a POST unless the Content-Length header is specified request.setContent(new EmptyContent()); } } }