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);
}
}
}