0

Web ビューを使用するアプリケーションを設計しました。私のアプリケーションは、開いたときにクライアントのサイトにアクセスする必要があります。したがって、検証のためにユーザー名とパスワードを取得し、サーバーからの応答をキャッチし、その応答を使用してコンテンツをロードする HTTP 接続を作成する必要があります。私はやろうとしてきましたが、それを理解することができません。この問題で私を助けてください。いくつかのコードで説明してください。

これは、私が HTTP 接続を確立しようとしているものですが、401応答コードをスローしています。問題は、エンコーダーに入力する資格情報を取得していないことだと思います。

HttpConnection httpConn=null;
DataInputStream dis=null;
DataOutputStream dos = null;

URLEncodedPostData encPostData = new URLEncodedPostData(null, false);
encPostData.append("username", PasswordPopupScreen._response2);
encPostData.append("password", PasswordPopupScreen._response3);

try {
    httpConn=(HttpConnection)Connector.open("myclient's siteURL");
    httpConn.setRequestProperty(HttpProtocolConstants.HEADER_CONTENT_TYPE,
                                HttpProtocolConstants.CONTENT_TYPE_APPLICATION_X_WWW_FORM_URLENCODED);
    httpConn.setRequestProperty(HttpProtocolConstants.HEADER_CONTENT_LENGTH,
                                String.valueOf(encPostData.getBytes().length));
    dos=httpConn.openDataOutputStream();
    dos.write(encPostData.getBytes());
    if(httpConn.getResponseCode()==HttpConnection.HTTP_OK)
    {
        //Dialog.alert("Success");
        System.out.println("Success");
    }
    else
    {
        // Dialog.alert("failed");
        System.out.println("failed");
    }
} catch (IOException e) {
    e.printStackTrace();
}

応答が401になるのはなぜですか? これは、不正アクセスを意味しますが、クライアントのサイトを表示する権限があります。私の知る限り、問題は、リクエストにユーザー名とパスワードが追加されていないことです。要求に資格情報を追加する方法を教えてください。クライアントのサーバーはNTLM認証を使用します。

4

1 に答える 1

0

こんにちは、HTTP 認証にアクセスするには、この KB 記事を参照してください。

http://supportforums.blackberry.com/t5/Java-Development/Implement-basic-HTTP-authentication/ta-p/445920

認証用の HTTP リクエストにこれらの行を追加する必要があります。

String login = "username:password";

//Close the connection.
s.close();

//Encode the login information in Base64 format.
byte[] encoded = Base64OutputStream.encode(login.getBytes(), 0, login.length(), 
                                           false, false);

//Open a new connection.
s = (StreamConnection)Connector.open("http://mysite.com/myProtectedFile.txt ");
httpConn = (HttpConnection)s;

//Add the authorized header.
httpConn.setRequestProperty("Authorization", "Basic " + new String(encoded));
于 2012-11-02T17:01:10.190 に答える