我正在尝试构建一个使用 REST Api 上传文件的 IntentService。
我能够从我的主 Activity 启动 IntentService,并且 IntentService 可以将消息传递回 Activity,因此我知道 IntentService 正在工作。
我的问题是当我运行此代码时:
@Override
protected void onHandleIntent(Intent intent) {
// do the uploading stuff
try {
URL url = new URL(this.url + fileName);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("PUT");
conn.setDoOutput(true);
BufferedInputStream buffInputStream = new BufferedInputStream(new FileInputStream(filePath));
BufferedOutputStream buffOutputStream = new BufferedOutputStream(conn.getOutputStream());
HttpUtils.copyBufferStream(buffInputStream, buffOutputStream);
if(conn.getResponseCode() == HttpURLConnection.HTTP_OK){
BufferedInputStream responseBufferedInput = new BufferedInputStream(conn.getInputStream());
byte[] body = HttpUtils.readStream(responseBufferedInput);
result = HttpUtils.convertBytesToString(body);
Log.e("Result:", result);
}else{
Log.e("conn.getResponseCode()", Integer.toString(conn.getResponseCode()));
}
} catch (IOException e) {
e.printStackTrace();
}
}
在 IntentService 的 onHandleIntent 方法中,我总是得到 404(或在不检查 conn.getResponseCode() 时出现 FileNotFoundException)。
在我的主活动中调用完全相同的代码,上传文件并成功完成。
我不知道为什么会这样?有任何想法吗?