diff --git a/app/build.gradle b/app/build.gradle index 5144f749d..9f151b8dc 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -150,8 +150,8 @@ android { debug { buildConfigField "String", "BASE_URL", "\"http://api.uat.lecheng163.com/\"" buildConfigField "String", "BASE_URL_DEBUG", "BASE_URL" - buildConfigField "String", "BASE_URL_STAGING", "BASE_URL" - buildConfigField "String", "BASE_URL_RELEASE", "BASE_URL" + buildConfigField "String", "BASE_URL_STAGING", "\"https://yinyou.api.shengxuanwangluo.com/\"" + buildConfigField "String", "BASE_URL_RELEASE", "\"https://yinyou.api.shengxuanwangluo.com/\"" minifyEnabled false shrinkResources false signingConfig signingConfigs.v1 diff --git a/app/src/main/java/com/mango/moshen/application/XChatApplication.java b/app/src/main/java/com/mango/moshen/application/XChatApplication.java index 44c84aa23..83f3b63cd 100644 --- a/app/src/main/java/com/mango/moshen/application/XChatApplication.java +++ b/app/src/main/java/com/mango/moshen/application/XChatApplication.java @@ -515,7 +515,6 @@ public class XChatApplication extends Application { .setBaseUrl(url) .addInterceptors(new ParamsInterceptor(httpParams)) .addInterceptors(new NoParamsInterceptor())//注意:拦截器的添加顺序,请求的拦截顺序 - .certificates() .build(); //单例的model 初始化 initModel(); diff --git a/library/src/main/java/com/mango/xchat_android_library/net/rxnet/interceptor/HttpLoggingInterceptor.java b/library/src/main/java/com/mango/xchat_android_library/net/rxnet/interceptor/HttpLoggingInterceptor.java index c60edc230..287188b50 100644 --- a/library/src/main/java/com/mango/xchat_android_library/net/rxnet/interceptor/HttpLoggingInterceptor.java +++ b/library/src/main/java/com/mango/xchat_android_library/net/rxnet/interceptor/HttpLoggingInterceptor.java @@ -15,6 +15,10 @@ */ package com.mango.xchat_android_library.net.rxnet.interceptor; +import static okhttp3.internal.platform.Platform.INFO; + +import androidx.annotation.NonNull; + import java.io.EOFException; import java.io.IOException; import java.nio.charset.Charset; @@ -38,8 +42,6 @@ import okio.Buffer; import okio.BufferedSource; import okio.GzipSource; -import static okhttp3.internal.platform.Platform.INFO; - /** * An OkHttp interceptor which logs request and response information. Can be applied as an * {@linkplain OkHttpClient#interceptors() application interceptor} or as a {@linkplain @@ -48,281 +50,289 @@ import static okhttp3.internal.platform.Platform.INFO; * a stable logging format, use your own interceptor. */ public final class HttpLoggingInterceptor implements Interceptor { - private static final Charset UTF8 = Charset.forName("UTF-8"); + private static final Charset UTF8 = Charset.forName("UTF-8"); + private final Logger logger; + private volatile Set headersToRedact = Collections.emptySet(); + private volatile Level level = Level.NONE; + + public HttpLoggingInterceptor() { + this(Logger.DEFAULT); + } + + public HttpLoggingInterceptor(Logger logger) { + this.logger = logger; + } - public enum Level { - /** No logs. */ - NONE, /** - * Logs request and response lines. - * - *

Example: - *

{@code
-     * --> POST /greeting http/1.1 (3-byte body)
-     *
-     * <-- 200 OK (22ms, 6-byte body)
-     * }
+ * Returns true if the body in question probably contains human readable text. Uses a small sample + * of code points to detect unicode control characters commonly used in binary file signatures. */ - BASIC, + static boolean isPlaintext(Buffer buffer) { + try { + Buffer prefix = new Buffer(); + long byteCount = buffer.size() < 64 ? buffer.size() : 64; + buffer.copyTo(prefix, 0, byteCount); + for (int i = 0; i < 16; i++) { + if (prefix.exhausted()) { + break; + } + int codePoint = prefix.readUtf8CodePoint(); + if (Character.isISOControl(codePoint) && !Character.isWhitespace(codePoint)) { + return false; + } + } + return true; + } catch (EOFException e) { + return false; // Truncated UTF-8 sequence. + } + } + + private static boolean bodyHasUnknownEncoding(Headers headers) { + String contentEncoding = headers.get("Content-Encoding"); + return contentEncoding != null + && !contentEncoding.equalsIgnoreCase("identity") + && !contentEncoding.equalsIgnoreCase("gzip"); + } + + public void redactHeader(String name) { + Set newHeadersToRedact = new TreeSet<>(String.CASE_INSENSITIVE_ORDER); + newHeadersToRedact.addAll(headersToRedact); + newHeadersToRedact.add(name); + headersToRedact = newHeadersToRedact; + } + + public Level getLevel() { + return level; + } + /** - * Logs request and response lines and their respective headers. - * - *

Example: - *

{@code
-     * --> POST /greeting http/1.1
-     * Host: example.com
-     * Content-Type: plain/text
-     * Content-Length: 3
-     * --> END POST
-     *
-     * <-- 200 OK (22ms)
-     * Content-Type: plain/text
-     * Content-Length: 6
-     * <-- END HTTP
-     * }
+ * Change the level at which this interceptor logs. */ - HEADERS, - /** - * Logs request and response lines and their respective headers and bodies (if present). - * - *

Example: - *

{@code
-     * --> POST /greeting http/1.1
-     * Host: example.com
-     * Content-Type: plain/text
-     * Content-Length: 3
-     *
-     * Hi?
-     * --> END POST
-     *
-     * <-- 200 OK (22ms)
-     * Content-Type: plain/text
-     * Content-Length: 6
-     *
-     * Hello!
-     * <-- END HTTP
-     * }
- */ - BODY - } - - public interface Logger { - void log(String message); - - /** A {@link Logger} defaults output appropriate for the current platform. */ - Logger DEFAULT = message -> Platform.get().log(INFO, message, null); - } - - public HttpLoggingInterceptor() { - this(Logger.DEFAULT); - } - - public HttpLoggingInterceptor(Logger logger) { - this.logger = logger; - } - - private final Logger logger; - - private volatile Set headersToRedact = Collections.emptySet(); - - public void redactHeader(String name) { - Set newHeadersToRedact = new TreeSet<>(String.CASE_INSENSITIVE_ORDER); - newHeadersToRedact.addAll(headersToRedact); - newHeadersToRedact.add(name); - headersToRedact = newHeadersToRedact; - } - - private volatile Level level = Level.NONE; - - /** Change the level at which this interceptor logs. */ - public HttpLoggingInterceptor setLevel(Level level) { - if (level == null) throw new NullPointerException("level == null. Use Level.NONE instead."); - this.level = level; - return this; - } - - public Level getLevel() { - return level; - } - - @Override public synchronized Response intercept(Chain chain) throws IOException { - Level level = this.level; - - Request request = chain.request(); - if (level == Level.NONE) { - return chain.proceed(request); + public HttpLoggingInterceptor setLevel(Level level) { + if (level == null) throw new NullPointerException("level == null. Use Level.NONE instead."); + this.level = level; + return this; } - boolean logBody = level == Level.BODY; - boolean logHeaders = logBody || level == Level.HEADERS; + @NonNull + @Override + public Response intercept(Chain chain) throws IOException { + Level level = this.level; - RequestBody requestBody = request.body(); - boolean hasRequestBody = requestBody != null; - - Connection connection = chain.connection(); - String requestStartMessage = "--> " - + request.method() - + ' ' + request.url() - + (connection != null ? " " + connection.protocol() : ""); - if (!logHeaders && hasRequestBody) { - requestStartMessage += " (" + requestBody.contentLength() + "-byte body)"; - } - logger.log(requestStartMessage); - - if (logHeaders) { - if (hasRequestBody) { - // Request body headers are only present when installed as a network interceptor. Force - // them to be included (when available) so there values are known. - if (requestBody.contentType() != null) { - logger.log("Content-Type: " + requestBody.contentType()); - } - if (requestBody.contentLength() != -1) { - logger.log("Content-Length: " + requestBody.contentLength()); - } - } - - Headers headers = request.headers(); - for (int i = 0, count = headers.size(); i < count; i++) { - String name = headers.name(i); - // Skip headers from the request body as they are explicitly logged above. - if (!"Content-Type".equalsIgnoreCase(name) && !"Content-Length".equalsIgnoreCase(name)) { - logHeader(headers, i); - } - } - - if (!logBody || !hasRequestBody) { - logger.log("--> END " + request.method()); - } else if (bodyHasUnknownEncoding(request.headers())) { - logger.log("--> END " + request.method() + " (encoded body omitted)"); - } else if (requestBody.isDuplex()) { - logger.log("--> END " + request.method() + " (duplex request body omitted)"); - } else { - Buffer buffer = new Buffer(); - requestBody.writeTo(buffer); - - Charset charset = UTF8; - MediaType contentType = requestBody.contentType(); - if (contentType != null) { - charset = contentType.charset(UTF8); + Request request = chain.request(); + if (level == Level.NONE) { + return chain.proceed(request); } - logger.log(""); - if (isPlaintext(buffer)) { - logger.log(buffer.readString(charset)); - logger.log("--> END " + request.method() - + " (" + requestBody.contentLength() + "-byte body)"); - } else { - logger.log("--> END " + request.method() + " (binary " - + requestBody.contentLength() + "-byte body omitted)"); + boolean logBody = level == Level.BODY; + boolean logHeaders = logBody || level == Level.HEADERS; + + synchronized (this) { + RequestBody requestBody = request.body(); + boolean hasRequestBody = requestBody != null; + + Connection connection = chain.connection(); + String requestStartMessage = "--> " + + request.method() + + ' ' + request.url() + + (connection != null ? " " + connection.protocol() : ""); + if (!logHeaders && hasRequestBody) { + requestStartMessage += " (" + requestBody.contentLength() + "-byte body)"; + } + logger.log(requestStartMessage); + + if (logHeaders) { + if (hasRequestBody) { + // Request body headers are only present when installed as a network interceptor. Force + // them to be included (when available) so there values are known. + if (requestBody.contentType() != null) { + logger.log("Content-Type: " + requestBody.contentType()); + } + if (requestBody.contentLength() != -1) { + logger.log("Content-Length: " + requestBody.contentLength()); + } + } + + Headers headers = request.headers(); + for (int i = 0, count = headers.size(); i < count; i++) { + String name = headers.name(i); + // Skip headers from the request body as they are explicitly logged above. + if (!"Content-Type".equalsIgnoreCase(name) && !"Content-Length".equalsIgnoreCase(name)) { + logHeader(headers, i); + } + } + + if (!logBody || !hasRequestBody) { + logger.log("--> END " + request.method()); + } else if (bodyHasUnknownEncoding(request.headers())) { + logger.log("--> END " + request.method() + " (encoded body omitted)"); + } else if (requestBody.isDuplex()) { + logger.log("--> END " + request.method() + " (duplex request body omitted)"); + } else { + Buffer buffer = new Buffer(); + requestBody.writeTo(buffer); + + Charset charset = UTF8; + MediaType contentType = requestBody.contentType(); + if (contentType != null) { + charset = contentType.charset(UTF8); + } + + logger.log(""); + if (isPlaintext(buffer)) { + logger.log(buffer.readString(charset)); + logger.log("--> END " + request.method() + + " (" + requestBody.contentLength() + "-byte body)"); + } else { + logger.log("--> END " + request.method() + " (binary " + + requestBody.contentLength() + "-byte body omitted)"); + } + } + } } - } + + long startNs = System.nanoTime(); + Response response; + try { + response = chain.proceed(request); + } catch (Exception e) { + logger.log("<-- HTTP FAILED: " + e); + throw e; + } + synchronized (this) { + long tookMs = TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - startNs); + + ResponseBody responseBody = response.body(); + long contentLength = responseBody.contentLength(); + String bodySize = contentLength != -1 ? contentLength + "-byte" : "unknown-length"; + logger.log("<-- " + + response.code() + + (response.message().isEmpty() ? "" : ' ' + response.message()) + + ' ' + response.request().url() + + " (" + tookMs + "ms" + (!logHeaders ? ", " + bodySize + " body" : "") + ')'); + + if (logHeaders) { + Headers headers = response.headers(); + for (int i = 0, count = headers.size(); i < count; i++) { + logHeader(headers, i); + } + + if (!logBody || !HttpHeaders.hasBody(response)) { + logger.log("<-- END HTTP"); + } else if (bodyHasUnknownEncoding(response.headers())) { + logger.log("<-- END HTTP (encoded body omitted)"); + } else { + BufferedSource source = responseBody.source(); + source.request(Long.MAX_VALUE); // Buffer the entire body. + Buffer buffer = source.getBuffer(); + + Long gzippedLength = null; + if ("gzip".equalsIgnoreCase(headers.get("Content-Encoding"))) { + gzippedLength = buffer.size(); + try (GzipSource gzippedResponseBody = new GzipSource(buffer.clone())) { + buffer = new Buffer(); + buffer.writeAll(gzippedResponseBody); + } + } + + Charset charset = UTF8; + MediaType contentType = responseBody.contentType(); + if (contentType != null) { + charset = contentType.charset(UTF8); + } + + if (!isPlaintext(buffer)) { + logger.log(""); + logger.log("<-- END HTTP (binary " + buffer.size() + "-byte body omitted)"); + return response; + } + + if (contentLength != 0) { + logger.log(""); + logger.log(buffer.clone().readString(charset)); + } + + if (gzippedLength != null) { + logger.log("<-- END HTTP (" + buffer.size() + "-byte, " + + gzippedLength + "-gzipped-byte body)"); + } else { + logger.log("<-- END HTTP (" + buffer.size() + "-byte body)"); + } + } + } + } + return response; } - long startNs = System.nanoTime(); - Response response; - try { - response = chain.proceed(request); - } catch (Exception e) { - logger.log("<-- HTTP FAILED: " + e); - throw e; - } - long tookMs = TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - startNs); - - ResponseBody responseBody = response.body(); - long contentLength = responseBody.contentLength(); - String bodySize = contentLength != -1 ? contentLength + "-byte" : "unknown-length"; - logger.log("<-- " - + response.code() - + (response.message().isEmpty() ? "" : ' ' + response.message()) - + ' ' + response.request().url() - + " (" + tookMs + "ms" + (!logHeaders ? ", " + bodySize + " body" : "") + ')'); - - if (logHeaders) { - Headers headers = response.headers(); - for (int i = 0, count = headers.size(); i < count; i++) { - logHeader(headers, i); - } - - if (!logBody || !HttpHeaders.hasBody(response)) { - logger.log("<-- END HTTP"); - } else if (bodyHasUnknownEncoding(response.headers())) { - logger.log("<-- END HTTP (encoded body omitted)"); - } else { - BufferedSource source = responseBody.source(); - source.request(Long.MAX_VALUE); // Buffer the entire body. - Buffer buffer = source.getBuffer(); - - Long gzippedLength = null; - if ("gzip".equalsIgnoreCase(headers.get("Content-Encoding"))) { - gzippedLength = buffer.size(); - try (GzipSource gzippedResponseBody = new GzipSource(buffer.clone())) { - buffer = new Buffer(); - buffer.writeAll(gzippedResponseBody); - } - } - - Charset charset = UTF8; - MediaType contentType = responseBody.contentType(); - if (contentType != null) { - charset = contentType.charset(UTF8); - } - - if (!isPlaintext(buffer)) { - logger.log(""); - logger.log("<-- END HTTP (binary " + buffer.size() + "-byte body omitted)"); - return response; - } - - if (contentLength != 0) { - logger.log(""); - logger.log(buffer.clone().readString(charset)); - } - - if (gzippedLength != null) { - logger.log("<-- END HTTP (" + buffer.size() + "-byte, " - + gzippedLength + "-gzipped-byte body)"); - } else { - logger.log("<-- END HTTP (" + buffer.size() + "-byte body)"); - } - } + private void logHeader(Headers headers, int i) { + String value = headersToRedact.contains(headers.name(i)) ? "██" : headers.value(i); + logger.log(headers.name(i) + ": " + value); } - return response; - } - - private void logHeader(Headers headers, int i) { - String value = headersToRedact.contains(headers.name(i)) ? "██" : headers.value(i); - logger.log(headers.name(i) + ": " + value); - } - - /** - * Returns true if the body in question probably contains human readable text. Uses a small sample - * of code points to detect unicode control characters commonly used in binary file signatures. - */ - static boolean isPlaintext(Buffer buffer) { - try { - Buffer prefix = new Buffer(); - long byteCount = buffer.size() < 64 ? buffer.size() : 64; - buffer.copyTo(prefix, 0, byteCount); - for (int i = 0; i < 16; i++) { - if (prefix.exhausted()) { - break; - } - int codePoint = prefix.readUtf8CodePoint(); - if (Character.isISOControl(codePoint) && !Character.isWhitespace(codePoint)) { - return false; - } - } - return true; - } catch (EOFException e) { - return false; // Truncated UTF-8 sequence. + public enum Level { + /** + * No logs. + */ + NONE, + /** + * Logs request and response lines. + * + *

Example: + *

{@code
+         * --> POST /greeting http/1.1 (3-byte body)
+         *
+         * <-- 200 OK (22ms, 6-byte body)
+         * }
+ */ + BASIC, + /** + * Logs request and response lines and their respective headers. + * + *

Example: + *

{@code
+         * --> POST /greeting http/1.1
+         * Host: example.com
+         * Content-Type: plain/text
+         * Content-Length: 3
+         * --> END POST
+         *
+         * <-- 200 OK (22ms)
+         * Content-Type: plain/text
+         * Content-Length: 6
+         * <-- END HTTP
+         * }
+ */ + HEADERS, + /** + * Logs request and response lines and their respective headers and bodies (if present). + * + *

Example: + *

{@code
+         * --> POST /greeting http/1.1
+         * Host: example.com
+         * Content-Type: plain/text
+         * Content-Length: 3
+         *
+         * Hi?
+         * --> END POST
+         *
+         * <-- 200 OK (22ms)
+         * Content-Type: plain/text
+         * Content-Length: 6
+         *
+         * Hello!
+         * <-- END HTTP
+         * }
+ */ + BODY } - } - private static boolean bodyHasUnknownEncoding(Headers headers) { - String contentEncoding = headers.get("Content-Encoding"); - return contentEncoding != null - && !contentEncoding.equalsIgnoreCase("identity") - && !contentEncoding.equalsIgnoreCase("gzip"); - } + public interface Logger { + /** + * A {@link Logger} defaults output appropriate for the current platform. + */ + Logger DEFAULT = message -> Platform.get().log(INFO, message, null); + + void log(String message); + } } diff --git a/tmpmob/ShareSDK/assets/ShareSDK.xml b/tmpmob/ShareSDK/assets/ShareSDK.xml index edbac8c4d..2be6ab7f1 100644 --- a/tmpmob/ShareSDK/assets/ShareSDK.xml +++ b/tmpmob/ShareSDK/assets/ShareSDK.xml @@ -55,4 +55,5 @@ + \ No newline at end of file