2012-01-19 27 views
3

基本的に私は自分のアンドロイドアプリをURLを使ってWebサービスに接続する必要があります。 "http:// username:[email protected]"という基本認証です。 明らかに、ユーザ名とパスワードは、アクセスを許可する前にウェブアプリによってチェックされ、それ以外の場合はリクエストを許可しません。Android - 基本認証済みHTTPリクエスト

私の問題は、URLに接続しようとしたクラスとメソッドの組み合わせに関係なく、いつも無許可(応答コード401)と言っていることです。

問題のWebアプリケーションは、un/pwが返されるように設計されています。それ以外の場合は何も返しません。Webアプリケーションとun/pwなどはすべてチェックされ、クリアされます。

そのようなURLにリクエストを送信して正しく動作させる方法はありませんか?

アンドロイドapi8ところで

UPDATE は私の問題は、アンドロイド/ ApacheのHTTPライブラリで直接サポートされていないWebアプリケーション使用のNTLM Windows認証によるものである。ここだ

+0

necassaryものを記述する?ウェブはおそらくBasic認証またはダイジェスト認証を使用しています。 あなたがしなければならないことは、適切なヘッダを作成してリクエストに追加するだけです。 HttpClientには、このためのAPIもあります。 –

+0

HTTPClientなどのリクエストにヘッダーや認証情報を追加するさまざまな実装 –

+0

以下のように投稿されたものなど、これはまだ実際の詳細なしでは何も意味しません。より大きな問題は、あなたのサーバーが基本認証を使用しているかどうかです。それは、ダイジェスト認証またはカスタムスキームである可能性があります。 –

答えて

8

今、適切な回避策を調査して判明いくつかのコードは私の本当に古いプロジェクトを形成します。私はいくつかのWebサービスに基本認証を使用しましたが、これはその時点で機能していました。それ以来、更新されたAPIがあるかどうかはわかりませんが(これはAndroid 1.6でした)、まだ動作するはずです。

 HttpGet request = new HttpGet(); 
     request.setURI(new URI(url)); 

      UsernamePasswordCredentials credentials = 
       new UsernamePasswordCredentials(authUser, authPass); 
      BasicScheme scheme = new BasicScheme(); 
      Header authorizationHeader = scheme.authenticate(credentials, request); 
      request.addHeader(authorizationHeader); 

基本的に、基本HTTP認証は、ユーザーとパスワードの単純なハッシュです。ブラウザでは、これらの値をURLに埋め込むことができますが、基本的な認証ヘッダーをリクエストに追加する作業は実際に行われます。すべてここにこのページNTLM認証への解決策を探しのために

+0

あなたは新しいAPIバージョンのために2つの最初の行を1つに結合します HttpGet request = new HttpGet(url ); 残念ながら、これは私の問題を解決していない、私はそれの実際のWebアプリケーション側の問題を考え始めた: –