blob: 830d1f14cbf3b2e99321771b5f9f62388d014309 [file] [log] [blame]
/*
* Copyright (C) 2006 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package android.net.http;
/**
* Callbacks in this interface are made as an HTTP request is
* processed. The normal order of callbacks is status(), headers(),
* then multiple data() then endData(). handleSslErrorRequest(), if
* there is an SSL certificate error. error() can occur anywhere
* in the transaction.
*
* {@hide}
*/
public interface EventHandler {
/**
* Error codes used in the error() callback. Positive error codes
* are reserved for codes sent by http servers. Negative error
* codes are connection/parsing failures, etc.
*/
/** Success */
public static final int OK = 0;
/** Generic error */
public static final int ERROR = -1;
/** Server or proxy hostname lookup failed */
public static final int ERROR_LOOKUP = -2;
/** Unsupported authentication scheme (ie, not basic or digest) */
public static final int ERROR_UNSUPPORTED_AUTH_SCHEME = -3;
/** User authentication failed on server */
public static final int ERROR_AUTH = -4;
/** User authentication failed on proxy */
public static final int ERROR_PROXYAUTH = -5;
/** Could not connect to server */
public static final int ERROR_CONNECT = -6;
/** Failed to write to or read from server */
public static final int ERROR_IO = -7;
/** Connection timed out */
public static final int ERROR_TIMEOUT = -8;
/** Too many redirects */
public static final int ERROR_REDIRECT_LOOP = -9;
/** Unsupported URI scheme (ie, not http, https, etc) */
public static final int ERROR_UNSUPPORTED_SCHEME = -10;
/** Failed to perform SSL handshake */
public static final int ERROR_FAILED_SSL_HANDSHAKE = -11;
/** Bad URL */
public static final int ERROR_BAD_URL = -12;
/** Generic file error for file:/// loads */
public static final int FILE_ERROR = -13;
/** File not found error for file:/// loads */
public static final int FILE_NOT_FOUND_ERROR = -14;
/** Too many requests queued */
public static final int TOO_MANY_REQUESTS_ERROR = -15;
final static int[] errorStringResources = {
com.android.internal.R.string.httpErrorOk,
com.android.internal.R.string.httpError,
com.android.internal.R.string.httpErrorLookup,
com.android.internal.R.string.httpErrorUnsupportedAuthScheme,
com.android.internal.R.string.httpErrorAuth,
com.android.internal.R.string.httpErrorProxyAuth,
com.android.internal.R.string.httpErrorConnect,
com.android.internal.R.string.httpErrorIO,
com.android.internal.R.string.httpErrorTimeout,
com.android.internal.R.string.httpErrorRedirectLoop,
com.android.internal.R.string.httpErrorUnsupportedScheme,
com.android.internal.R.string.httpErrorFailedSslHandshake,
com.android.internal.R.string.httpErrorBadUrl,
com.android.internal.R.string.httpErrorFile,
com.android.internal.R.string.httpErrorFileNotFound,
com.android.internal.R.string.httpErrorTooManyRequests
};
/**
* Called after status line has been sucessfully processed.
* @param major_version HTTP version advertised by server. major
* is the part before the "."
* @param minor_version HTTP version advertised by server. minor
* is the part after the "."
* @param code HTTP Status code. See RFC 2616.
* @param reason_phrase Textual explanation sent by server
*/
public void status(int major_version,
int minor_version,
int code,
String reason_phrase);
/**
* Called after all headers are successfully processed.
*/
public void headers(Headers headers);
/**
* An array containing all or part of the http body as read from
* the server.
* @param data A byte array containing the content
* @param len The length of valid content in data
*
* Note: chunked and compressed encodings are handled within
* android.net.http. Decoded data is passed through this
* interface.
*/
public void data(byte[] data, int len);
/**
* Called when the document is completely read. No more data()
* callbacks will be made after this call
*/
public void endData();
/**
* SSL certificate callback called every time a resource is
* loaded via a secure connection
*/
public void certificate(SslCertificate certificate);
/**
* There was trouble.
* @param id One of the error codes defined below
* @param description of error
*/
public void error(int id, String description);
/**
* SSL certificate error callback. Handles SSL error(s) on the way
* up to the user. The callback has to make sure that restartConnection() is called,
* otherwise the connection will be suspended indefinitely.
*/
public void handleSslErrorRequest(SslError error);
}