2016-06-20 3 views
0

JavaプログラムでAzureストレージレストapisを使用していて、pageblobを作成してからvhd putページを使用します。ここでストレージサービスAPIを使用してBLOBを作成すると、「HTTPヘッダーの1つの値が正しい形式ではありません」

が私のコードです:

url = String.format("https://myaccount.blob.core.windows.net/vhds/mypageblob"); 
Date now = new Date(); 
SimpleDateFormat dateFormatter = new SimpleDateFormat("E, dd MMM yyyy hh:mm:ss zzz"); 
dateFormatter.setTimeZone(TimeZone.getTimeZone("GMT")); 
requestHeaders.put("x-ms-date", dateFormatter.format(now)); 
requestHeaders.put("x-ms-blob-type", "PageBlob"); 
requestHeaders.put("x-ms-blob-content-length", "4096"); 
requestHeaders.put("x-ms-blob-sequence-number", "0"); 
requestHeaders.put("Authorization", "SharedKey"); 

// Use api to get the shared key. 
requestHeaders.put("myaccount", primary_key); 

私はエラーを取得する「HTTPヘッダーの1つの値が正しい形式ではありません。 400 '。どのように私はこれをデバッグできますか?

+0

プロジェクトでSharekeyを生成する方法を教えてください。私の経験から、エラーキーがこの問題を引き起こします。また、フィドラーを使用してこの問題のトラブルシューティングを行うこともできます。 –

答えて

1

ここで理想的なオプションは、MavenまたはGitHub(ソースとして)から利用可能なAzure Storage Java Client Libraryを使用することです。

これが不可能で何らかの理由でREST APIを直接使用する必要がある場合は、ライブラリのソースコードを調べて、必要なロジックを実装する方法を確認することが有効です。

上記のコードでは、auth関連の情報を2つの別々のヘッダーに分割しているようです。

認証:SharedKeyのマイアカウント:ctzMq410TV3wS7upTBcunJTDLEJwMAZuFPfr0mrrA08 =また

は、あなたが直接あなたのストレージの主キーを転送していますか?これは、1つのヘッダー、このようなものでなければなりませんかこれは認証の仕方ではなく、キーを使用してリクエストを識別する特定の「署名文字列」に署名する必要があります。 Azure Storageへの認証方法の詳細については、https://msdn.microsoft.com/en-us/library/azure/dd179428.aspxを参照してください。

+0

レスポンスAdamに感謝します。あなたが提案したようにClientライブラリを試してみます。これが役に立ちます! –

関連する問題