QQ浏览器 v12.2.3.7053版本的 MD5 值为:8285ab3059e5c8b521a264dfbc5c3685

以下内容为反编译后的 SearchKeepAliveConnection.java 源代码,内容仅作参考


package com.tencent.mtt.search.network;

import android.text.TextUtils;
import com.taf.UniPacket;
import com.tencent.common.http.HttpHeader;
import com.tencent.common.http.MttInputStream;
import com.tencent.common.http.MttRequestBase;
import com.tencent.common.http.MttResponse;
import com.tencent.common.http.Requester;
import com.tencent.common.http.RequesterFactory;
import com.tencent.common.utils.FileUtils;
import com.tencent.common.utils.QBKeyStore;
import com.tencent.common.utils.TEACoding;
import com.tencent.common.utils.gzip.GzipUtils;
import com.tencent.mtt.base.wup.GUIDManager;
import com.tencent.mtt.search.DirectFunnelReporter;
import com.tencent.mtt.twsdk.qbinfo.QUAUtils;
import com.tencent.mtt.twsdk.qbinfo.TWSettingManager;
import java.io.IOException;
import java.io.InputStream;
import java.nio.ByteBuffer;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class SearchKeepAliveConnection {

    private ExecutorService f70341b;

    private ISearchConnectionListener f70343d;

    private boolean f70342c = false;

    boolean f70340a = true;
    private String e = "http://wup.imtt.qq.com:8080";

    public class KeepAliveRunnable implements Runnable {

        private Requester f70345b;

        private MttRequestBase f70346c;

        public KeepAliveRunnable(MttRequestBase mttRequestBase) {
            this.f70346c = mttRequestBase;
        }

        private Requester a() {
            Requester requester = RequesterFactory.getRequester(0);
            requester.setIsRemoveHeader(SearchKeepAliveConnection.this.f70340a);
            requester.setConnectTimeout(20000);
            requester.setReadTimeout(20000);
            requester.setCookieEnable(false);
            return requester;
        }

        @Override
        public void run() {
            Requester requester;
            UniPacket uniPacket;
            DirectFunnelReporter.a(50);
            try {
                if (this.f70345b == null) {
                    this.f70345b = a();
                }
                uniPacket = SearchKeepAliveConnection.this.a(this.f70345b.execute(this.f70346c));
                Requester requester2 = this.f70345b;
                if (requester2 != null) {
                    requester2.close();
                }
            } catch (Exception unused) {
                requester = this.f70345b;
            } catch (Throwable unused2) {
                requester = this.f70345b;
            }
            DirectFunnelReporter.a(uniPacket == null ? 31 : 32);
            SearchKeepAliveConnection.this.b(uniPacket);
        }
    }

    private UniPacket a(byte[] bArr, boolean z) {
        if (bArr != null && bArr.length >= 1) {
            if (this.f70342c) {
                try {
                    bArr = new TEACoding(QBKeyStore.a(7)).c(bArr);
                } catch (Exception unused) {
                }
            }
            if (bArr != null && bArr.length >= 1) {
                if (z) {
                    bArr = GzipUtils.b(bArr);
                }
                if (bArr != null && bArr.length >= 1) {
                    UniPacket uniPacket = new UniPacket();
                    try {
                        uniPacket.setEncodeName("UTF-8");
                        uniPacket.setProtocolClassNamePrefs("com.tencent.mtt.search.network.MTT");
                        uniPacket.decode(bArr);
                        return uniPacket;
                    } catch (Exception unused2) {
                    }
                }
            }
        }
        return null;
    }

    private boolean b(MttResponse mttResponse) {
        if (mttResponse == null || mttResponse.getStatusCode().intValue() != 200) {
            return false;
        }
        String qSZip = mttResponse.getQSZip();
        return !TextUtils.isEmpty(qSZip) && "gzip".equalsIgnoreCase(qSZip.trim().toLowerCase());
    }

    private byte[] c(MttResponse mttResponse) throws OutOfMemoryError, IOException {
        if (mttResponse.getStatusCode().intValue() == 200) {
            String qEncrypt = mttResponse.getQEncrypt();
            if (!TextUtils.isEmpty(qEncrypt) && "mttecr2".equalsIgnoreCase(qEncrypt.trim().toLowerCase())) {
                this.f70342c = true;
            }
            MttInputStream inputStream = mttResponse.getInputStream();
            if (inputStream != null) {
                ByteBuffer a2 = FileUtils.a((InputStream) inputStream);
                mttResponse.setFlow(a2.position());
                byte[] bArr = new byte[a2.position()];
                a2.position(0);
                a2.get(bArr);
                FileUtils.h().a(a2);
                return bArr;
            }
        }
        return null;
    }

    UniPacket a(MttResponse mttResponse) throws OutOfMemoryError, IOException {
        if (mttResponse == null) {
            return null;
        }
        return a(c(mttResponse), b(mttResponse));
    }

    protected MttRequestBase a(UniPacket uniPacket, boolean z, boolean z2) {
        MttRequestBase mttRequestBase = RequesterFactory.getMttRequestBase();
        mttRequestBase.setRequestType(MttRequestBase.REQUEST_SEARCH);
        if (this.f70340a) {
            mttRequestBase.replaceHeader("User-Agent", "MQQBrowser");
            mttRequestBase.replaceHeader("Accept", "*/*");
            mttRequestBase.mForceNoReferer = true;
        }
        mttRequestBase.addHeader("Content-Type", "application/multipart-formdata");
        if (z) {
            if (TWSettingManager.a().a("key_enable_qua", false)) {
                mttRequestBase.addHeader(HttpHeader.REQ.QUA, QUAUtils.b());
            }
        } else if (TWSettingManager.a().a("key_enable_qua", false)) {
            mttRequestBase.addHeader(HttpHeader.REQ.QUA, QUAUtils.b());
        }
        mttRequestBase.addHeader(HttpHeader.REQ.QGUID, GUIDManager.a().f());
        mttRequestBase.setUrl(this.e);
        mttRequestBase.setMethod((byte) 1);
        mttRequestBase.addHeader("Connection", "keep-alive");
        byte[] encode = uniPacket.encode();
        if (z2) {
            mttRequestBase.addHeader("QQ-S-ZIP", "gzip");
            encode = GzipUtils.a(encode);
            try {
                encode = new TEACoding(QBKeyStore.a(7)).a(encode);
                mttRequestBase.addHeader("QQ-S-Encrypt", "mttecr2");
            } catch (Exception unused) {
            }
        }
        mttRequestBase.setPostData(encode);
        return mttRequestBase;
    }

    public void a() {
        ExecutorService executorService = this.f70341b;
        if (executorService != null) {
            executorService.shutdownNow();
            this.f70341b = null;
        }
        this.f70343d = null;
    }

    public void a(UniPacket uniPacket) {
        int i;
        try {
            if (this.f70341b == null) {
                this.f70341b = Executors.newFixedThreadPool(2);
            }
            DirectFunnelReporter.a(47);
            this.f70341b.execute(new KeepAliveRunnable(a(uniPacket, false, this.f70342c)));
        } catch (Exception unused) {
            i = 48;
            DirectFunnelReporter.a(i);
            b((UniPacket) null);
        } catch (OutOfMemoryError unused2) {
            i = 49;
            DirectFunnelReporter.a(i);
            b((UniPacket) null);
        }
    }

    public void a(ISearchConnectionListener iSearchConnectionListener) {
        this.f70343d = iSearchConnectionListener;
    }

    public void b(UniPacket uniPacket) {
        ISearchConnectionListener iSearchConnectionListener = this.f70343d;
        if (iSearchConnectionListener != null) {
            iSearchConnectionListener.a(uniPacket);
        }
    }
}