- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我创建了一个方法“UPLPAD2”来将文件上传到服务器。将我的文件拆分为数据包 (10MB)。没关系(100%)。但是当我调用 getInputStream 时,我得到 FileNotFoundException。我想,在循环中,我创建了新的 HttpURLConnection 来设置“setRequestProperty”。这是个问题。这是我的代码:
@SuppressLint("NewApi")
public int upload2(URL url, String filePath,
OnProgressUpdate progressCallBack, AtomicInteger cancelHandle)
throws IOException {
HttpURLConnection connection = null;
InputStream fileStream = null;
OutputStream out = null;
InputStream in = null;
HttpResponse response = new HttpResponse();
Log.e("Upload_Url_Util", url.getFile());
Log.e("Upload_FilePath_Util", filePath);
long total = 0;
try {
// Write the request.
// Read from filePath and upload to server (url)
byte[] buf = new byte[1024];
fileStream = new FileInputStream(filePath);
long lenghtOfFile = (new java.io.File(filePath)).length();
Log.e("LENGHT_Of_File", lenghtOfFile + "");
int totalPacket = 5 * 1024 * 1024; // 10 MB
int totalChunk = (int) ((lenghtOfFile + (totalPacket - 1)) / totalPacket);
String headerValue = "";
String contentLenght = "";
for (int i = 0; i < totalChunk; i++) {
long from = i * totalPacket;
long to = 0;
if ((from + totalPacket) > lenghtOfFile) {
to = lenghtOfFile;
} else {
to = (totalPacket * (i + 1));
}
to = to - 1;
headerValue = "bytes " + from + "-" + to + "/" + lenghtOfFile;
contentLenght = "Content-Length:" + (to - from + 1);
Log.e("Conten_LENGHT", contentLenght);
connection = client.open(url);
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Range", headerValue);
connection.setRequestProperty("Content-Length",
Long.toString(to - from + 1));
out = connection.getOutputStream();
Log.e("Lenght_Of_File", lenghtOfFile + "");
Log.e("Total_Packet", totalPacket + "");
Log.e("Total_Chunk", totalChunk + "");
Log.e("Header_Valure", headerValue);
int read = 1;
while (read > 0 && cancelHandle.intValue() == 0
&& total < totalPacket * (i + 1)) {
read = fileStream.read(buf);
if (read > 0) {
out.write(buf, 0, read);
total += read;
progressCallBack
.onProgressUpdate((int) ((total * 100) / lenghtOfFile));
}
}
Log.e("TOTAL_", total + "------" + totalPacket * (i + 1));
Log.e("I_", i + "");
Log.e("LENGHT_Of_File", lenghtOfFile + "");
if (i < totalChunk - 1) {
connection.disconnect();
}
out.close();
}
// Read the response.
response.setHttpCode(connection.getResponseCode());
in = connection.getInputStream(); // I GET ERROR HERE.
if (connection.getResponseCode() != HttpURLConnection.HTTP_OK) {
throw new IOException("Unexpected HTTP response: "
+ connection.getResponseCode() + " "
+ connection.getResponseMessage());
}
byte[] body = readFully(in);
response.setBody(body);
response.setHeaderFields(connection.getHeaderFields());
if (cancelHandle.intValue() != 0) {
return 1;
}
JSONObject jo = new JSONObject(response.getBodyAsString());
Log.e("Upload_Body_res_", response.getBodyAsString());
if (jo.has("error")) {
if (jo.has("code")) {
int errCode = jo.getInt("code");
Log.e("Upload_Had_errcode", errCode + "");
return errCode;
} else {
return 504;
}
}
Log.e("RESPONE_BODY_UPLOAD", response.getBodyAsString() + "");
return 0;
} catch (Exception e) {
e.printStackTrace();
Log.e("Http_UpLoad_Response_Exception", e.toString());
response.setHttpCode(connection.getResponseCode());
Log.e("ErrorCode_Upload_Util_Return", response.getHttpCode() + "");
if (connection.getResponseCode() == 200) {
return 1;
} else if (connection.getResponseCode() == 0) {
return 1;
} else {
return response.getHttpCode();
}
// Log.e("ErrorCode_Upload_Util_Return", response.getHttpCode()+"");
} finally {
if (fileStream != null)
fileStream.close();
if (out != null)
out.close();
if (in != null)
in.close();
}
}
和 Logcat
06-12 09:39:29.558: W/System.err(30740): java.io.FileNotFoundException: http://download-f77c.fshare.vn/upload/NRHAwh+bUCxjUtcD4cn9xqkADpdL32AT9pZm7zaboHLwJHLxOPxUX9CQxOeBRgelkjeNM5XcK11M1V-x
06-12 09:39:29.558: W/System.err(30740): at com.squareup.okhttp.internal.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:187)
06-12 09:39:29.563: W/System.err(30740): at com.fsharemobile.client.HttpUtil.upload2(HttpUtil.java:383)
06-12 09:39:29.563: W/System.err(30740): at com.fsharemobile.fragments.ExplorerFragment$7$1.run(ExplorerFragment.java:992)
06-12 09:39:29.568: W/System.err(30740): at java.lang.Thread.run(Thread.java:856)
06-12 09:39:29.568: E/Http_UpLoad_Response_Exception(30740): java.io.FileNotFoundException: http://download-f77c.fshare.vn/upload/NRHAwh+bUCxjUtcD4cn9xqkADpdL32AT9pZm7zaboHLwJHLxOPxUX9CQxOeBRgelkjeNM5XcK11M1V-x
最佳答案
FileNotFoundException
是 HttpURLConnection.getInputStream()
为您提供 HTTP 404 状态的方式。因此,您要发布到的 URL 不存在。如果您获得的响应代码不是 200,则根本不应调用 getInputStream()
,而应调用 getErrorStream()。
但是您不需要所有这些代码。 Java 将为您设置内容长度,您的复制循环只需要如下所示:
while ((count = in.read(buffer)) > 0)
{
out.write(buffer, 0, count);
}
其中 count
是一个 int
而 buffer
是一个大于零的任意大小的 byte[]
,通常为 8192。您不必担心使其与文件、 block 或任何其他大小相同。只需设置分块传输模式,Java 就会搞定。
关于java - HttpURL 连接! Connection.getInputStream 是 java.io.FileNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24175896/
使用输入/输出流在我的客户端和服务器之间传递对象。我可以用我的服务器发送和接收对象,现在我希望客户端也能发送,现在只能发送。所以我给了我的客户一个 ObjectInputStream。但是,当我初始化
我正在使用 HttpURLConnection 从我的网站读取一个简单的文本文件,当它调用 getInputStream 时,它会卡住并且永远不会完成,getResponseCode 返回 200。它
嗨,我已经创建了一个服务器套接字,用于使用 getInputStream 从套接字读取字节数组,但是 getInputStream.read 在数据结束后不会退出。下面是我的代码。 class im
我使用进程构建器和进程(使用 ffmpeg),并且我必须将 ffmpeg 输出重定向到 java 输入。我写了这段简短的代码,但输入流无论如何都是空的...... public class Ffmpe
我有一个 Activity ,它调用异步任务以通过预定义的 InetAddress 接受套接字连接。 异步任务调用另一个异步任务来监听消息。但它卡在获取输入流上 我已经绞尽脑汁好几个小时了,但无法弄清
要从 HttpURLConnection 获取 InputStream,我们的代码如下 urlConnection.getInputStream(); 如果InputStream是一个Abstract
大家 我正在尝试用 Java 编写一个小程序,该小程序将访问视频游戏的应用程序编程接口(interface) (API),虽然我可以通过 Eclipse IDE 成功运行该小程序,但从浏览器运行时它始
我的作业是从 java 程序中调用 .jar,但我无法获取输入流以将结果返回为可读的内容。这是我首先做的: InputStream in = proc.getInputStream(); System
我正在尝试编写 TCP 聊天服务器程序,但在使用 .getInputStream() 和 .getOutputStream() 方法时遇到困难,编译器表示“找不到符号方法 .getInputStrea
我正在尝试调用网络服务并解析返回的 XML,因此我的调用 URL 是: http://192.168.1.12/cr.ws/CarCategories.asmx/CarCategoryComparat
这是一个简单的测试程序。主线程启动了多个子线程。我已经添加到主要:Runtime.getRuntime().addShutdownHook(hookThread); 当在JVM 进程上按下^C 时,此
图片上传功能是我们web里面经常用到的,获得的方式也有很多种,这里我用的是request.getinputstream()获取文件流的方式。想要获取文件流有两种方式,附上代码
我一直在研究一个调用 Rest API 的 portlet。当API被调用且请求的数据不存在时,返回相应的JSON格式的错误信息(带有Bad request http code - 400),如果id
我有一个客户端服务器应用程序,其中服务器向客户端发送一些二进制数据,并且客户端必须根据自定义二进制格式从该字节流中反序列化对象。数据通过HTTPS连接发送,并且客户端使用HttpsURLConnect
我构建了这段代码来从 URL 获取 XML我使用了 AsyncTask,当到达 getInputStream() 点时,半身应用程序仍然崩溃 重点是我想从 url 获取 XML 作为字符串。 我尝试不
我正在使用 jssc 库通过串行端口与设备进行通信。在标准 java SerialComm 库中有两个方法 getInputStream() 和 getOutputStream()。 为什么我需要这个
这是我的代码: Runtime re = Runtime.getRuntime(); BufferedReader output = null; try{
当我们在创建客户端后第二次调用Socket.getInputStream()时,它返回null。我能做什么? 最佳答案 如果您不小心使用了此模式,它感觉就像返回了空值: InputStream is
我正在服务器 URL 上发送请求,但遇到“文件未找到”异常,但当我通过网络浏览器浏览此文件时,情况似乎很好。 URL url = 新 URL(serverUrl); 连接 = getSecureCon
我正在开发一个学校项目,以下代码是用于构建该项目的示例(应该可以正常工作,但不是......)。没有编译错误,但是当我使用 telnet 测试它时,显示以下消息: java.io.StreamCorr
我是一名优秀的程序员,十分优秀!