有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java安卓amazons3上传。错误405

几天来,我一直在尝试将AmazonS3连接到我的Android项目。我下载了示例“https://github.com/awslabs/aws-sdk-安卓-samples”“S3TransferUtilitySample”,一切都很好,我通过aws管理面板查看文件。 我使用工作设置将“Constants.java”复制到我的项目中,也复制了“Util.java”而不做任何更改

我的项目的目的是从麦克风录制文件并将其传输到云端。 以下是应实现此操作的单例:

public class RecorderHelper {
private static final String TAG = "UploadActivity";
private static TransferUtility sTransferUtility;
static private Util util;
static RecorderHelper singleton;
static Boolean RecordStateRecording;
private static MediaRecorder recorder;
private final String RECORD = Environment.getExternalStorageDirectory() + "/record.aac";
String fileName;

private RecorderHelper() {
}

public static RecorderHelper getSingleton(Context context) {
    if (singleton == null) {
        RecordStateRecording = false;
        singleton = new RecorderHelper();
        util = new Util();
        AmazonS3Client s3Client = util.getS3Client(context);
        sTransferUtility = util.getTransferUtility(context);
    }
    ;
    return singleton;
}

public void StopRecording() {
    try {
        if (RecordStateRecording) {
            recorder.stop();
            recorder.reset();
            recorder.release();
            AACTrackImpl aacTrack = new AACTrackImpl(new FileDataSourceImpl(RECORD));
            if (aacTrack.getSamples().size() > 1000) {
                CroppedTrack aacTrackShort = new CroppedTrack(aacTrack, aacTrack.getSamples().size() - 1000, aacTrack.getSamples().size());
                Movie movie = new Movie();
                movie.addTrack(aacTrackShort);
                Container mp4file = new DefaultMp4Builder().build(movie);
                FileChannel fc = new FileOutputStream(new File(fileName)).getChannel();
                mp4file.writeContainer(fc);
                fc.close();
                aacTrackShort.close();
                aacTrack.close();
            } else {
                aacTrack.close();
            }
        }

        File file = new File(RECORD);
        TransferObserver observer = sTransferUtility.upload(Constants.BUCKET_NAME, file.getName(),
                file);
        observer.setTransferListener(new UploadListener());

    } catch (Exception e) {
        Log.e("RECORD", e.getMessage());
    }
    RecordStateRecording = false;
}

public void StartNewRecording(String UUID) {
    StopRecording();
    recorder = new MediaRecorder();
    recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
    recorder.setOutputFormat(MediaRecorder.OutputFormat.AAC_ADTS);
    recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
    fileName = Environment.getExternalStorageDirectory() + "/" + UUID + ".aac";
    recorder.setOutputFile(RECORD);
    try {
        recorder.prepare();
    } catch (IOException e) {
        e.printStackTrace();
    }
    recorder.start();   // Recording is now started
    RecordStateRecording = true;
}

private class UploadListener implements TransferListener {

    // Simply updates the UI list when notified.
    @Override
    public void onError(int id, Exception e) {
        Log.e(TAG, "Error during upload: " + id, e);
    }

    @Override
    public void onProgressChanged(int id, long bytesCurrent, long bytesTotal) {
        Log.d(TAG, String.format("onProgressChanged: %d, total: %d, current: %d",
                id, bytesTotal, bytesCurrent));
    }

    @Override
    public void onStateChanged(int id, TransferState newState) {
        Log.d(TAG, "onStateChanged: " + id + ", " + newState);
    }
}

}

但是,该文件不会出现在云中,侦听器会告诉我405错误。全文如下。 谁能告诉我我做错了什么

Unable to unmarshall error response (Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null object reference). Response Code: 405, Response Text:

我正在使用最新的SDK: 编译'com。amazonaws:aws-安卓-sdk-s3:2.6.+' 不确定stacktrace,因为我刚刚收到一个关于传输失败的回调给我的侦听器。 API 22


共 (0) 个答案