2017-03-12 8 views
0

私はでdocumentDBにクエリを送信しています:AzureのDocumentDBのJavaのAndroid 401権限

client = new DocumentClient(END_POINT, 
      MASTER_KEY, ConnectionPolicy.GetDefault(), 
      ConsistencyLevel.Session); 

    FeedResponse<Document> documents = client.queryDocuments("/dbs/mydb/colls/mycoll", query, null); 

と私は、サーバー

for (Document document : documents.getQueryIterable()) 

からの応答を読み込むしようとしたとき、私は次の例外を取得しています:

{"code":"Unauthorized","message":"The input authorization token can't serve the request. Please check that the expected payload is built as per the protocol, and check the key being used. Server used the following payload to sign: 'post\ndocs\ndbs/mydb/colls/mycoll\nsun, 12 mar 2017 08:40:40 gmt\n\n'\r\nActivityId: f40f31cf-f11c-4052-94b4-992cfdd271f5"} 

リクエストヘッダ:

重要である私のの
"x-ms-date" -> "Sun, 12 Mar 2017 08:40:40 GMT" 
"x-ms-documentdb-isquery" -> "true" 
"Accept" -> "application/json" 
"Content-Type" -> "application/query+json" 
"authorization" -> "type%3Dmaster%26ver%3D1.0%26sig%3DiQvTEAbWWK8pvHvr9RAqp2kjiechyPp6S5kvxT4g6Kw%3D%0A" 

その他の要求値:

resourceid = mycoll 
Path = /dbs/mydb/colls/mycoll/docs/ 
resourceType = Document 
IsMedia = false 

は私が

答えて

0

ソリューションは、ApacheにアンドロイドのBase64の実装から切り替えたこのエラーを修正するために何ができるか見当がつかない私を助けてください。

+0

こんにちは、あなたはどのように正確にApacheの実装に切り替えましたか教えてください。私は同じ問題に直面していますが、Spring framewokに直面しています。ありがとうございました。 http://stackoverflow.com/questions/43026784/java-documentdb-unauthorized-access – miskohut

+0

@miskohut非常に醜い方法で - ダウンローダdocumentdbのソースコードを次にapacheのbase64クラスのソースコードにコピーし、別の名前空間の下にこの方法を貼り付けコピーアンドロイドは、それを交換する。あなたはそれを試すことができますが、私はそれがdocumentdbクラスをオーバーライドしてはならないので、春のフレームワークのための大文字小文字の区別がわからないとにかく私はこのソリューションをドロップし、中間層としてアプリケーションサービスを提供するWeb APIサーバーに切り替えました。 C#の下では、何も問題なくチャームのように機能します。またここに投稿された不正な問題は、このライブラリをアンドロイドの下で動作させるための私の修正の最後のステップでした。 – Groth

関連する問題