4

例を見つけました

try {
        String data = "YOUR REQUEST BODY HERE";
        //
        CredentialsProvider credProvider = new BasicCredentialsProvider();
        credProvider.setCredentials(new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT),
            new UsernamePasswordCredentials("YOUR USER NAME HERE", "YOUR PASSWORD HERE"));
        //
        DefaultHttpClient http = new DefaultHttpClient();
        http.setCredentialsProvider(credProvider);
        //
        HttpPut put = new HttpPut("YOUR HTTPS URL HERE");
        try {
            put.setEntity(new StringEntity(data, "UTF8"));
        } catch (UnsupportedEncodingException e) {
            Log.e(TAG, "UnsupportedEncoding: ", e);
        }
        put.addHeader("Content-type","SET CONTENT TYPE HERE IF YOU NEED TO");
        HttpResponse response = http.execute(put);
        Log.d(TAG, "This is what we get back:"+response.getStatusLine().toString()+", "+response.getEntity().toString());
    } catch (ClientProtocolException e) {
        //
        Log.d(TAG, "Client protocol exception", e);
    } catch (IOException e) {
        //
        Log.d(TAG, "IOException", e);
    }

ただし、認証の形式で文字列を送信する必要があります。<Login>@<ID>:<Passsword>

これを行う方法?

4

2 に答える 2

0

サーバーが実際に基本認証を使用していると確信していますか? そうである場合は、資格情報を次のように設定する必要があります。

new UsernamePasswordCredentials("Login@ID", "Passsword");

それ以外の場合は、実際の認証プロトコルが何であるかを確認して実装します (認証情報をヘッダーで送信するか、URL の一部として、または POST パラメーターとして送信するなど)。

于 2012-10-10T02:36:29.860 に答える
0

HTTP Basic が実際に何であるかを最初に確認する必要があります: http://en.m.wikipedia.org/wiki/Basic_access_authentication#section_3

あなたの質問はHTTP Basicを対象としておらず、本質的に安全ではないため、まったく使用しないでください。

あなたが求めるものはURLの一部であるべきだと思います。SSL などの手段を追加しても、資格情報を URL に埋め込むことはありません。

HTTP Basic は、ユーザー名とパスワードを暗号化 (実際にはハッシュ) する方法を定義します。HTTP とあなたが要求した形式を持つ方法はありません。

于 2012-10-09T18:35:36.253 に答える