10

プロキシ経由で Amazon S3 にファイルをアップロードしようとしているこの単純なコードがあります。これはコードです:

    BasicAWSCredentials basicCred = new BasicAWSCredentials("my_access_key", "my_secret_key");
    ClientConfiguration clientCfg = new ClientConfiguration();
    clientCfg.setProtocol(Protocol.HTTP);

    //setup proxy connection:
    clientCfg.setProxyHost("192.168.2.12");
    clientCfg.setProxyPort(80);




    AmazonS3 s3 = new AmazonS3Client(basicCred, clientCfg);


    String bucketName = "mybucket";
    String key = "/test/Capture.JPG";
    File file = new File("d:/Test_Data/Capture.JPG");

    System.out.println("Uploading a new object to S3 from a file");
    s3.putObject(new PutObjectRequest(bucketName, key, file));

ただし、これはプログラムの実行から得たエラーです。

Exception in thread "main" java.lang.NullPointerException
    at com.amazonaws.util.BinaryUtils.fromHex(BinaryUtils.java:69)
    at com.amazonaws.services.s3.AmazonS3Client.putObject(AmazonS3Client.java:1066)
    at javaapplication8.JavaApplication8.main(JavaApplication8.java:48)
Java Result: 1

Amazon の最新の aws 1.3.8 SDK を使用しています。プロキシは私の隣の別の PC にセットアップされており、単純な Javascript プロキシです (http://www.catonmat.net/http-proxy-in-nodejs/)

理由がわかりません。誰か助けてくれませんか?

4

3 に答える 3

3

私もこの問題に遭遇しました。デバッガーですべてを調べたところ、問題の原因は Amazon S3 クライアント コードが というヘッダー タグを期待していることがわかりました"ETag"が、応答には"Etag"小文字のが含まれてい"t"ます。

ヘッダーは に配置されるMap<String,String>ため、Amazon S3 クライアント コードが を呼び出すとget("ETag")、 が返さnullれ、hexData()メソッドに渡されて爆発します。

これは、Amazon S3 以外のサービスを使用している、または Web プロキシを介して Amazon の AWS S3 サービスにアクセスしている多くの人々に発生しているようです。

Headers.ETAGAmazonクライアントソースを取得し、値を変更して自分"Etag"で構築する以外の修正方法はわかりませんJAR

于 2014-03-01T20:56:48.207 に答える