1

我正在尝试构建一个使用 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)。

在我的主活动中调用完全相同的代码,上传文件并成功完成。

我不知道为什么会这样?有任何想法吗?

4

1 回答 1

5

尝试打印您尝试打开的 URL,您可能会发现它有问题……也许只是缺少斜线;-)

404 是未找到的 HTTP 错误。表示该 URL 在该服务器上无效。

于 2013-02-22T11:17:21.533 回答