Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/189.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在HttpURLConnection.setFixedLengthSTreamingMode()中获取异常_Java_Android - Fatal编程技术网

Java 在HttpURLConnection.setFixedLengthSTreamingMode()中获取异常

Java 在HttpURLConnection.setFixedLengthSTreamingMode()中获取异常,java,android,Java,Android,我试图在HttpURLConnectionobject中设置fixedLengthStreamingMode属性,但得到一个异常java.lang.NoSuchMethodError 代码: 错误 注意:我正在使用java 7平台。查看此处的文档 有两种方法: API级别1中添加的setFixedLengthStreamingModeint API级别19中添加的setFixedLengthStreamingModelong int最大值为2147483647 长最大值为92233720368

我试图在HttpURLConnectionobject中设置fixedLengthStreamingMode属性,但得到一个异常java.lang.NoSuchMethodError

代码:

错误


注意:我正在使用java 7平台。

查看此处的文档

有两种方法:

API级别1中添加的setFixedLengthStreamingModeint API级别19中添加的setFixedLengthStreamingModelong int最大值为2147483647

长最大值为9223372036854775807

流术语,这意味着SetFixedLength StreamingModeInt可以删除最大大小长度的小数,以确保安全:

int sizeInBytes = Integer.MAX_VALUE; // 2,147,483,647 bytes
int sizeInKB = sizeInBytes / 1024;   // 2,097,151 kilobytes
int sizeInMB = sizeInKB / 1024;      // 2,047 megabytes
int sizeInGB = sizeInMB / 1024;      // 1.99 gigabytes
API 19中添加的setFixedLengthStreamingModelong支持比Integer.Max支持的更大的文件大小。大文件:

long sizeInBytes = Long.MAX_VALUE;  // 9,223,372,036,854,775,807 bytes
long sizeInKB = sizeInBytes / 1024; // 9,007,119,254,740,991 kilobytes
long sizeInMB = sizeInKB / 1024;    // 8,796,014,897,207 megabytes
long sizeInGB = sizeInMB / 1024;    // 8,589,858,298 gigabytes
long sizeInTB = sizeInGB / 1024;    // 8,388,533 terabytes
long sizeInPB = sizeInTB / 1024;    // 8,191 petabytes
如果永远不会超过Integer.MAX_值,则将长contentLength强制转换为int,不会得到API错误,但是当requestSize>Integer.MAX_值时可能会得到错误:

您可以简单地执行以下操作:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
    conn.setFixedLengthStreamingMode(requestSize);
} else if (requestSize <= Integer.MAX_VALUE) {
    conn.setFixedLengthStreamingMode((int) requestSize);
} else {
    //Don't set fixed length...
}

setFixedLengthStreamingMode可从API 19获得,您在哪个版本上测试应用程序?我的构建目标是20,我在API 16中运行它。但是我没有得到任何警告。有两种方法可以设置固定长度的流模式,一种是在我使用的api 16中支持int参数。
long sizeInBytes = Long.MAX_VALUE;  // 9,223,372,036,854,775,807 bytes
long sizeInKB = sizeInBytes / 1024; // 9,007,119,254,740,991 kilobytes
long sizeInMB = sizeInKB / 1024;    // 8,796,014,897,207 megabytes
long sizeInGB = sizeInMB / 1024;    // 8,589,858,298 gigabytes
long sizeInTB = sizeInGB / 1024;    // 8,388,533 terabytes
long sizeInPB = sizeInTB / 1024;    // 8,191 petabytes
conn.setFixedLengthStreamingMode((int) requestSize);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
    conn.setFixedLengthStreamingMode(requestSize);
} else if (requestSize <= Integer.MAX_VALUE) {
    conn.setFixedLengthStreamingMode((int) requestSize);
} else {
    //Don't set fixed length...
}