mirror of
https://github.com/alibaba/canal.git
synced 2026-11-04 00:30:15 +08:00
fixed PR format
This commit is contained in:
@@ -13,11 +13,7 @@ import com.alibaba.otter.canal.parse.driver.mysql.packets.HeaderPacket;
|
|||||||
import com.alibaba.otter.canal.parse.driver.mysql.packets.client.AuthSwitchResponsePacket;
|
import com.alibaba.otter.canal.parse.driver.mysql.packets.client.AuthSwitchResponsePacket;
|
||||||
import com.alibaba.otter.canal.parse.driver.mysql.packets.client.ClientAuthenticationPacket;
|
import com.alibaba.otter.canal.parse.driver.mysql.packets.client.ClientAuthenticationPacket;
|
||||||
import com.alibaba.otter.canal.parse.driver.mysql.packets.client.QuitCommandPacket;
|
import com.alibaba.otter.canal.parse.driver.mysql.packets.client.QuitCommandPacket;
|
||||||
import com.alibaba.otter.canal.parse.driver.mysql.packets.server.AuthSwitchRequestMoreData;
|
import com.alibaba.otter.canal.parse.driver.mysql.packets.server.*;
|
||||||
import com.alibaba.otter.canal.parse.driver.mysql.packets.server.AuthSwitchRequestPacket;
|
|
||||||
import com.alibaba.otter.canal.parse.driver.mysql.packets.server.ErrorPacket;
|
|
||||||
import com.alibaba.otter.canal.parse.driver.mysql.packets.server.HandshakeInitializationPacket;
|
|
||||||
import com.alibaba.otter.canal.parse.driver.mysql.packets.server.Reply323Packet;
|
|
||||||
import com.alibaba.otter.canal.parse.driver.mysql.socket.SocketChannel;
|
import com.alibaba.otter.canal.parse.driver.mysql.socket.SocketChannel;
|
||||||
import com.alibaba.otter.canal.parse.driver.mysql.socket.SocketChannelPool;
|
import com.alibaba.otter.canal.parse.driver.mysql.socket.SocketChannelPool;
|
||||||
import com.alibaba.otter.canal.parse.driver.mysql.utils.MSC;
|
import com.alibaba.otter.canal.parse.driver.mysql.utils.MSC;
|
||||||
@@ -247,6 +243,7 @@ public class MysqlConnector {
|
|||||||
body = PacketManager.readBytes(channel, header.getPacketBodyLength(), timeout);
|
body = PacketManager.readBytes(channel, header.getPacketBodyLength(), timeout);
|
||||||
assert body != null;
|
assert body != null;
|
||||||
if (body[0] == 0x01 && body[1] == 0x04) {
|
if (body[0] == 0x01 && body[1] == 0x04) {
|
||||||
|
// fixed issue https://github.com/alibaba/canal/pull/4767, support mysql 8.0.30+
|
||||||
header = cachingSha2PasswordFullAuth(channel, header, getPassword().getBytes(), scramble);
|
header = cachingSha2PasswordFullAuth(channel, header, getPassword().getBytes(), scramble);
|
||||||
body = PacketManager.readBytes(channel, header.getPacketBodyLength(), timeout);
|
body = PacketManager.readBytes(channel, header.getPacketBodyLength(), timeout);
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -1,13 +1,9 @@
|
|||||||
package com.alibaba.otter.canal.parse.driver.mysql.utils;
|
package com.alibaba.otter.canal.parse.driver.mysql.utils;
|
||||||
|
|
||||||
import java.security.DigestException;
|
import java.security.*;
|
||||||
import java.security.InvalidKeyException;
|
|
||||||
import java.security.KeyFactory;
|
|
||||||
import java.security.MessageDigest;
|
|
||||||
import java.security.NoSuchAlgorithmException;
|
|
||||||
import java.security.PublicKey;
|
|
||||||
import java.security.spec.InvalidKeySpecException;
|
import java.security.spec.InvalidKeySpecException;
|
||||||
import java.security.spec.X509EncodedKeySpec;
|
import java.security.spec.X509EncodedKeySpec;
|
||||||
|
|
||||||
import javax.crypto.BadPaddingException;
|
import javax.crypto.BadPaddingException;
|
||||||
import javax.crypto.Cipher;
|
import javax.crypto.Cipher;
|
||||||
import javax.crypto.IllegalBlockSizeException;
|
import javax.crypto.IllegalBlockSizeException;
|
||||||
|
|||||||
@@ -13,21 +13,14 @@ import org.springframework.util.CollectionUtils;
|
|||||||
|
|
||||||
import com.alibaba.otter.canal.client.CanalConnector;
|
import com.alibaba.otter.canal.client.CanalConnector;
|
||||||
import com.alibaba.otter.canal.protocol.CanalEntry;
|
import com.alibaba.otter.canal.protocol.CanalEntry;
|
||||||
import com.alibaba.otter.canal.protocol.CanalEntry.Column;
|
|
||||||
import com.alibaba.otter.canal.protocol.CanalEntry.Entry;
|
|
||||||
import com.alibaba.otter.canal.protocol.CanalEntry.EntryType;
|
|
||||||
import com.alibaba.otter.canal.protocol.CanalEntry.EventType;
|
|
||||||
import com.alibaba.otter.canal.protocol.CanalEntry.Pair;
|
|
||||||
import com.alibaba.otter.canal.protocol.CanalEntry.RowChange;
|
|
||||||
import com.alibaba.otter.canal.protocol.CanalEntry.RowData;
|
|
||||||
import com.alibaba.otter.canal.protocol.CanalEntry.TransactionBegin;
|
|
||||||
import com.alibaba.otter.canal.protocol.CanalEntry.TransactionEnd;
|
|
||||||
import com.alibaba.otter.canal.protocol.Message;
|
import com.alibaba.otter.canal.protocol.Message;
|
||||||
|
import com.alibaba.otter.canal.protocol.CanalEntry.*;
|
||||||
import com.google.protobuf.InvalidProtocolBufferException;
|
import com.google.protobuf.InvalidProtocolBufferException;
|
||||||
|
|
||||||
public class BaseCanalClientTest {
|
public class BaseCanalClientTest {
|
||||||
|
|
||||||
protected final static Logger logger = LoggerFactory.getLogger(AbstractCanalClientTest.class);
|
protected final static Logger logger = LoggerFactory
|
||||||
|
.getLogger(AbstractCanalClientTest.class);
|
||||||
protected static final String SEP = SystemUtils.LINE_SEPARATOR;
|
protected static final String SEP = SystemUtils.LINE_SEPARATOR;
|
||||||
protected static final String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";
|
protected static final String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";
|
||||||
protected volatile boolean running = false;
|
protected volatile boolean running = false;
|
||||||
@@ -51,8 +44,7 @@ public class BaseCanalClientTest {
|
|||||||
+ "----------------> binlog[{}:{}] , name[{},{}] , eventType : {} , executeTime : {}({}) , gtid : ({}) , delay : {} ms"
|
+ "----------------> binlog[{}:{}] , name[{},{}] , eventType : {} , executeTime : {}({}) , gtid : ({}) , delay : {} ms"
|
||||||
+ SEP;
|
+ SEP;
|
||||||
|
|
||||||
transaction_format = SEP
|
transaction_format = SEP + "================> binlog[{}:{}] , executeTime : {}({}) , gtid : ({}) , delay : {}ms"
|
||||||
+ "================> binlog[{}:{}] , executeTime : {}({}) , gtid : ({}) , delay : {}ms"
|
|
||||||
+ SEP;
|
+ SEP;
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -71,8 +63,8 @@ public class BaseCanalClientTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
SimpleDateFormat format = new SimpleDateFormat(DATE_FORMAT);
|
SimpleDateFormat format = new SimpleDateFormat(DATE_FORMAT);
|
||||||
logger.info(context_format, new Object[] { batchId, size, memsize, format.format(new Date()), startPosition,
|
logger.info(context_format,
|
||||||
endPosition });
|
new Object[] { batchId, size, memsize, format.format(new Date()), startPosition, endPosition });
|
||||||
}
|
}
|
||||||
|
|
||||||
protected String buildPositionForDump(Entry entry) {
|
protected String buildPositionForDump(Entry entry) {
|
||||||
@@ -94,7 +86,8 @@ public class BaseCanalClientTest {
|
|||||||
Date date = new Date(entry.getHeader().getExecuteTime());
|
Date date = new Date(entry.getHeader().getExecuteTime());
|
||||||
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||||
|
|
||||||
if (entry.getEntryType() == EntryType.TRANSACTIONBEGIN || entry.getEntryType() == EntryType.TRANSACTIONEND) {
|
if (entry.getEntryType() == EntryType.TRANSACTIONBEGIN
|
||||||
|
|| entry.getEntryType() == EntryType.TRANSACTIONEND) {
|
||||||
if (entry.getEntryType() == EntryType.TRANSACTIONBEGIN) {
|
if (entry.getEntryType() == EntryType.TRANSACTIONBEGIN) {
|
||||||
TransactionBegin begin = null;
|
TransactionBegin begin = null;
|
||||||
try {
|
try {
|
||||||
@@ -106,8 +99,9 @@ public class BaseCanalClientTest {
|
|||||||
logger.info(transaction_format,
|
logger.info(transaction_format,
|
||||||
new Object[] { entry.getHeader().getLogfileName(),
|
new Object[] { entry.getHeader().getLogfileName(),
|
||||||
String.valueOf(entry.getHeader().getLogfileOffset()),
|
String.valueOf(entry.getHeader().getLogfileOffset()),
|
||||||
String.valueOf(entry.getHeader().getExecuteTime()), simpleDateFormat.format(date),
|
String.valueOf(entry.getHeader().getExecuteTime()),
|
||||||
entry.getHeader().getGtid(), String.valueOf(delayTime) });
|
simpleDateFormat.format(date), entry.getHeader().getGtid(),
|
||||||
|
String.valueOf(delayTime) });
|
||||||
logger.info(" BEGIN ----> Thread id: {}", begin.getThreadId());
|
logger.info(" BEGIN ----> Thread id: {}", begin.getThreadId());
|
||||||
printXAInfo(begin.getPropsList());
|
printXAInfo(begin.getPropsList());
|
||||||
} else if (entry.getEntryType() == EntryType.TRANSACTIONEND) {
|
} else if (entry.getEntryType() == EntryType.TRANSACTIONEND) {
|
||||||
@@ -124,8 +118,9 @@ public class BaseCanalClientTest {
|
|||||||
logger.info(transaction_format,
|
logger.info(transaction_format,
|
||||||
new Object[] { entry.getHeader().getLogfileName(),
|
new Object[] { entry.getHeader().getLogfileName(),
|
||||||
String.valueOf(entry.getHeader().getLogfileOffset()),
|
String.valueOf(entry.getHeader().getLogfileOffset()),
|
||||||
String.valueOf(entry.getHeader().getExecuteTime()), simpleDateFormat.format(date),
|
String.valueOf(entry.getHeader().getExecuteTime()),
|
||||||
entry.getHeader().getGtid(), String.valueOf(delayTime) });
|
simpleDateFormat.format(date), entry.getHeader().getGtid(),
|
||||||
|
String.valueOf(delayTime) });
|
||||||
}
|
}
|
||||||
|
|
||||||
continue;
|
continue;
|
||||||
@@ -143,8 +138,8 @@ public class BaseCanalClientTest {
|
|||||||
|
|
||||||
logger.info(row_format,
|
logger.info(row_format,
|
||||||
new Object[] { entry.getHeader().getLogfileName(),
|
new Object[] { entry.getHeader().getLogfileName(),
|
||||||
String.valueOf(entry.getHeader().getLogfileOffset()), entry.getHeader().getSchemaName(),
|
String.valueOf(entry.getHeader().getLogfileOffset()),
|
||||||
entry.getHeader().getTableName(), eventType,
|
entry.getHeader().getSchemaName(), entry.getHeader().getTableName(), eventType,
|
||||||
String.valueOf(entry.getHeader().getExecuteTime()), simpleDateFormat.format(date),
|
String.valueOf(entry.getHeader().getExecuteTime()), simpleDateFormat.format(date),
|
||||||
entry.getHeader().getGtid(), String.valueOf(delayTime) });
|
entry.getHeader().getGtid(), String.valueOf(delayTime) });
|
||||||
|
|
||||||
@@ -174,8 +169,8 @@ public class BaseCanalClientTest {
|
|||||||
if (StringUtils.containsIgnoreCase(column.getMysqlType(), "BLOB")
|
if (StringUtils.containsIgnoreCase(column.getMysqlType(), "BLOB")
|
||||||
|| StringUtils.containsIgnoreCase(column.getMysqlType(), "BINARY")) {
|
|| StringUtils.containsIgnoreCase(column.getMysqlType(), "BINARY")) {
|
||||||
// get value bytes
|
// get value bytes
|
||||||
builder.append(column.getName() + " : "
|
builder.append(
|
||||||
+ new String(column.getValue().getBytes("ISO-8859-1"), "UTF-8"));
|
column.getName() + " : " + new String(column.getValue().getBytes("ISO-8859-1"), "UTF-8"));
|
||||||
} else {
|
} else {
|
||||||
builder.append(column.getName() + " : " + column.getValue());
|
builder.append(column.getName() + " : " + column.getValue());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,10 +22,8 @@ public class SimpleCanalClientPermanceTest {
|
|||||||
long end = 0;
|
long end = 0;
|
||||||
final ArrayBlockingQueue<Long> queue = new ArrayBlockingQueue<>(100);
|
final ArrayBlockingQueue<Long> queue = new ArrayBlockingQueue<>(100);
|
||||||
try {
|
try {
|
||||||
final CanalConnector connector = CanalConnectors.newSingleConnector(new InetSocketAddress(ip, 11111),
|
final CanalConnector connector = CanalConnectors
|
||||||
destination,
|
.newSingleConnector(new InetSocketAddress(ip, 11111), destination, "canal", "canal");
|
||||||
"canal",
|
|
||||||
"canal");
|
|
||||||
|
|
||||||
Thread ackThread = new Thread(() -> {
|
Thread ackThread = new Thread(() -> {
|
||||||
while (true) {
|
while (true) {
|
||||||
|
|||||||
@@ -22,10 +22,8 @@ public class SimpleCanalClientTest extends AbstractCanalClientTest {
|
|||||||
// 根据ip,直接创建链接,无HA的功能
|
// 根据ip,直接创建链接,无HA的功能
|
||||||
String destination = "example";
|
String destination = "example";
|
||||||
String ip = AddressUtils.getHostIp();
|
String ip = AddressUtils.getHostIp();
|
||||||
CanalConnector connector = CanalConnectors.newSingleConnector(new InetSocketAddress(ip, 11111),
|
CanalConnector connector = CanalConnectors
|
||||||
destination,
|
.newSingleConnector(new InetSocketAddress(ip, 11111), destination, "canal", "canal");
|
||||||
"canal",
|
|
||||||
"canal");
|
|
||||||
|
|
||||||
final SimpleCanalClientTest clientTest = new SimpleCanalClientTest(destination);
|
final SimpleCanalClientTest clientTest = new SimpleCanalClientTest(destination);
|
||||||
clientTest.setConnector(connector);
|
clientTest.setConnector(connector);
|
||||||
|
|||||||
@@ -34,7 +34,8 @@ public class CanalKafkaClientExample {
|
|||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
try {
|
try {
|
||||||
final CanalKafkaClientExample kafkaCanalClientExample = new CanalKafkaClientExample(AbstractKafkaTest.zkServers,
|
final CanalKafkaClientExample kafkaCanalClientExample = new CanalKafkaClientExample(
|
||||||
|
AbstractKafkaTest.zkServers,
|
||||||
AbstractKafkaTest.servers,
|
AbstractKafkaTest.servers,
|
||||||
AbstractKafkaTest.topic,
|
AbstractKafkaTest.topic,
|
||||||
AbstractKafkaTest.partition,
|
AbstractKafkaTest.partition,
|
||||||
|
|||||||
@@ -35,7 +35,8 @@ public class CanalKafkaClientFlatMessageExample {
|
|||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
try {
|
try {
|
||||||
final CanalKafkaClientFlatMessageExample kafkaCanalClientExample = new CanalKafkaClientFlatMessageExample(AbstractKafkaTest.zkServers,
|
final CanalKafkaClientFlatMessageExample kafkaCanalClientExample = new CanalKafkaClientFlatMessageExample(
|
||||||
|
AbstractKafkaTest.zkServers,
|
||||||
AbstractKafkaTest.servers,
|
AbstractKafkaTest.servers,
|
||||||
AbstractKafkaTest.topic,
|
AbstractKafkaTest.topic,
|
||||||
AbstractKafkaTest.partition,
|
AbstractKafkaTest.partition,
|
||||||
|
|||||||
@@ -43,7 +43,8 @@ public class CanalKafkaOffsetClientExample {
|
|||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
try {
|
try {
|
||||||
final CanalKafkaOffsetClientExample kafkaCanalClientExample = new CanalKafkaOffsetClientExample(AbstractKafkaTest.servers,
|
final CanalKafkaOffsetClientExample kafkaCanalClientExample = new CanalKafkaOffsetClientExample(
|
||||||
|
AbstractKafkaTest.servers,
|
||||||
AbstractKafkaTest.topic,
|
AbstractKafkaTest.topic,
|
||||||
AbstractKafkaTest.partition,
|
AbstractKafkaTest.partition,
|
||||||
AbstractKafkaTest.groupId);
|
AbstractKafkaTest.groupId);
|
||||||
|
|||||||
@@ -1,13 +1,15 @@
|
|||||||
package com.alibaba.otter.canal.example.rocketmq;
|
package com.alibaba.otter.canal.example.rocketmq;
|
||||||
|
|
||||||
import com.alibaba.otter.canal.client.rocketmq.RocketMQCanalConnector;
|
|
||||||
import com.alibaba.otter.canal.protocol.Message;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.util.Assert;
|
import org.springframework.util.Assert;
|
||||||
|
|
||||||
|
import com.alibaba.otter.canal.client.rocketmq.RocketMQCanalConnector;
|
||||||
|
import com.alibaba.otter.canal.protocol.Message;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* RocketMQ client example
|
* RocketMQ client example
|
||||||
*
|
*
|
||||||
@@ -26,15 +28,23 @@ public class CanalRocketMQClientExample extends AbstractRocektMQTest {
|
|||||||
|
|
||||||
private Thread.UncaughtExceptionHandler handler = (t, e) -> logger.error("parse events has an error", e);
|
private Thread.UncaughtExceptionHandler handler = (t, e) -> logger.error("parse events has an error", e);
|
||||||
|
|
||||||
public CanalRocketMQClientExample(String nameServers, String topic, String groupId) {
|
public CanalRocketMQClientExample(String nameServers, String topic, String groupId){
|
||||||
connector = new RocketMQCanalConnector(nameServers, topic, groupId, 500, false);
|
connector = new RocketMQCanalConnector(nameServers, topic, groupId, 500, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public CanalRocketMQClientExample(String nameServers, String topic, String groupId, boolean enableMessageTrace,
|
public CanalRocketMQClientExample(String nameServers, String topic, String groupId, boolean enableMessageTrace,
|
||||||
String accessKey, String secretKey, String accessChannel, String namespace) {
|
String accessKey, String secretKey, String accessChannel, String namespace){
|
||||||
connector = new RocketMQCanalConnector(nameServers, topic, groupId, accessKey,
|
connector = new RocketMQCanalConnector(nameServers,
|
||||||
secretKey, -1, false, enableMessageTrace,
|
topic,
|
||||||
null, accessChannel, namespace);
|
groupId,
|
||||||
|
accessKey,
|
||||||
|
secretKey,
|
||||||
|
-1,
|
||||||
|
false,
|
||||||
|
enableMessageTrace,
|
||||||
|
null,
|
||||||
|
accessChannel,
|
||||||
|
namespace);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
|
|||||||
@@ -18,7 +18,8 @@ import com.alibaba.otter.canal.protocol.FlatMessage;
|
|||||||
*/
|
*/
|
||||||
public class CanalRocketMQClientFlatMessageExample extends AbstractRocektMQTest {
|
public class CanalRocketMQClientFlatMessageExample extends AbstractRocektMQTest {
|
||||||
|
|
||||||
protected final static Logger logger = LoggerFactory.getLogger(CanalRocketMQClientFlatMessageExample.class);
|
protected final static Logger logger = LoggerFactory
|
||||||
|
.getLogger(CanalRocketMQClientFlatMessageExample.class);
|
||||||
|
|
||||||
private RocketMQCanalConnector connector;
|
private RocketMQCanalConnector connector;
|
||||||
|
|
||||||
@@ -34,7 +35,8 @@ public class CanalRocketMQClientFlatMessageExample extends AbstractRocektMQTest
|
|||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
try {
|
try {
|
||||||
final CanalRocketMQClientFlatMessageExample rocketMQClientExample = new CanalRocketMQClientFlatMessageExample(nameServers,
|
final CanalRocketMQClientFlatMessageExample rocketMQClientExample = new CanalRocketMQClientFlatMessageExample(
|
||||||
|
nameServers,
|
||||||
topic,
|
topic,
|
||||||
groupId);
|
groupId);
|
||||||
logger.info("## Start the rocketmq consumer: {}-{}", topic, groupId);
|
logger.info("## Start the rocketmq consumer: {}-{}", topic, groupId);
|
||||||
|
|||||||
@@ -1,12 +1,6 @@
|
|||||||
package com.alibaba.otter.canal.parse.inbound.mysql.rds;
|
package com.alibaba.otter.canal.parse.inbound.mysql.rds;
|
||||||
|
|
||||||
import io.netty.handler.codec.http.HttpResponseStatus;
|
import java.io.*;
|
||||||
|
|
||||||
import java.io.BufferedOutputStream;
|
|
||||||
import java.io.File;
|
|
||||||
import java.io.FileOutputStream;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.io.InputStream;
|
|
||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
@@ -41,6 +35,8 @@ import org.slf4j.LoggerFactory;
|
|||||||
import com.alibaba.otter.canal.parse.exception.CanalParseException;
|
import com.alibaba.otter.canal.parse.exception.CanalParseException;
|
||||||
import com.alibaba.otter.canal.parse.inbound.mysql.rds.data.BinlogFile;
|
import com.alibaba.otter.canal.parse.inbound.mysql.rds.data.BinlogFile;
|
||||||
|
|
||||||
|
import io.netty.handler.codec.http.HttpResponseStatus;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author chengjin.lyf on 2018/8/7 下午3:10
|
* @author chengjin.lyf on 2018/8/7 下午3:10
|
||||||
* @since 1.0.25
|
* @since 1.0.25
|
||||||
@@ -212,7 +208,7 @@ public class BinlogDownloadQueue {
|
|||||||
InputStream is = response.getEntity().getContent();
|
InputStream is = response.getEntity().getContent();
|
||||||
boolean isChunked = response.getEntity().isChunked();
|
boolean isChunked = response.getEntity().isChunked();
|
||||||
Header contentLengthHeader = response.getFirstHeader("Content-Length");
|
Header contentLengthHeader = response.getFirstHeader("Content-Length");
|
||||||
long totalSize = isChunked || contentLengthHeader == null ? 0 : Long.parseLong(contentLengthHeader.getValue());
|
long totalSize = (isChunked || contentLengthHeader == null) ? 0 : Long.parseLong(contentLengthHeader.getValue());
|
||||||
if (response.getFirstHeader("Content-Disposition") != null) {
|
if (response.getFirstHeader("Content-Disposition") != null) {
|
||||||
fileName = response.getFirstHeader("Content-Disposition").getValue();
|
fileName = response.getFirstHeader("Content-Disposition").getValue();
|
||||||
fileName = StringUtils.substringAfter(fileName, "filename=");
|
fileName = StringUtils.substringAfter(fileName, "filename=");
|
||||||
|
|||||||
Reference in New Issue
Block a user