1

Androidでapachehttpクライアントを使用していたときに、logcatに疑わしいメッセージが表示されました。

I/APACHE HTTP (thCr=2252) - NafHttpAuthStrategyDefault(9949): (thUse=2252) NafHttpAuthStrategyDefault()
I/APACHE HTTP (thCr=2252) - NafHttpAuthStrategyDefault(9949): (thUse=2252)    cached value : gbaSupportIsPossible=null
I/APACHE HTTP (thCr=2252) - NafHttpAuthStrategyDefault(9949): (thUse=2252)    The current context is NOT a context of GBA service.
I/APACHE HTTP (thCr=2252) - GbaSupportPermissionRequestCheckerImpl(9949): (thUse=2252) isCurrentProcessRequestedGba()#finished   result=false
I/APACHE HTTP (thCr=2252) - GbaSupportPermissionRequestCheckerImpl(9949): (thUse=2252) isCurrentProcessAllowedToUseGba()#started   result=false
I/APACHE HTTP (thCr=2252) - NafHttpAuthStrategyDefault(9949): (thUse=2252)    The GBA permission wasn't requested for this process.
I/APACHE HTTP (thCr=2252) - NafHttpAuthStrategyDefault(9949): (thUse=2252) It is impossible to support GBA now (many possible reasons: no Android Context, current client is GBA service, etc.), then it will be just usual HTTP.
I/APACHE HTTP (thCr=2252) - NafRequestExecutorWrapperRedirectionHandler(9949): (thUse=2252)    It isn't GBA flow, redirection responses are not handled.

私は以下のように使用します:

HttpClient httpClient = new DefaultHttpClient();
HttpContext httpContext = new BasicHttpContext();

HttpPost postRequest = new HttpPost(url);
postRequest.addHeader("User-Agent", String.format("%s %s %s %s %s", Build.MANUFACTURER, Build.MODEL, Build.PRODUCT, Build.CPU_ABI, Config.appStr));

MultipartEntity reqEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);

reqEntity.addPart("sessionId", new StringBody(sessionId));

ByteArrayBody bab = new ByteArrayBody(afp, "afp");
reqEntity.addPart("afp", bab);

if (pcm != null)
{
    ByteArrayBody bab2 = new ByteArrayBody(pcm, "pcm");
    reqEntity.addPart("pcm", bab2);
}

postRequest.setEntity(reqEntity);

HttpResponse response = httpClient.execute(postRequest, httpContext);
BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent(), "UTF-8"));
String sResponse;
StringBuilder s = new StringBuilder();
while ((sResponse = reader.readLine()) != null) {
    s = s.append(sResponse);
    System.out.println(sResponse);
}

GBAサービスの意味は何ですか?そして、どうすればGBAの許可を得ることができますか?メッセージを受け取った後、このリクエストを送信するスレッドは、例外を受け取って停止しているように見えます。GalaxyNotesでコードを実行しました。

4

5 に答える 5

4

GBA-汎用ブートストラップアーキテクチャ(3GPP標準で定義された認証メカニズム)...詳細については、 http://en.wikipedia.org/wiki/Generic_Bootstrapping_Architectureを参照してください。

Galaxy Note(T-mobileバージョンだと思います)では、T-mobileはAPACHE HTTPクライアントを変更して、WiFi経由の認証用のGBAクライアント、特にMMSoverWiFi用のGBAクライアントを追加しました。

質問はなぜGBAを使いたいのですか?これは通常、ISIMキーを使用した認証用であり、オペレーターはそれらをサービスに使用します。

アプリが通常のアプリである場合、最善の策は、デフォルトのandroid HTTPクライアントを使用し、ApacheHTTPクライアントを使用しないことです。

于 2012-12-18T00:34:30.153 に答える
1

あなたが言及しているGBAサービスはここで説明されていると思います:http://en.wikipedia.org/wiki/Generic_Bootstrapping_Architecture

ログにもそのメッセージが表示されましたが、ネットワーク接続はまだ正常に完了しています。

それに続いて例外が発生したのは、メインスレッドからネットワーク接続を確立しようとしたときでした。これは許可されていないと思います。

于 2012-08-14T16:36:20.803 に答える
0

アプリをアンインストールして再インストールしたら直りました!

于 2015-03-11T12:55:49.043 に答える