そうです、私はAndroidで基本認証を理解しようとして取り組んでいるので、URLからjsonデータを取得できます。これまでのところ、基本認証は私に多くの問題を引き起こしているようです. 最後に、3 日間の適切な調査の後、同様の手法を使用して xml をプルダウンする例をオンラインで見つけました。これは私が持っているものです:
String MY_APP_TAG = "basic.authentication";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
String username = "username";
String host = "www.example.com";
String password = "password";
String urlBasePath = "http://www.example.com/api/core/v1/my";
String urlApiCall_FindAllRepositories = urlBasePath;
try {
HttpClient client = new DefaultHttpClient();
AuthScope as = new AuthScope(host, 80);
UsernamePasswordCredentials upc = new UsernamePasswordCredentials(
username, password);
((AbstractHttpClient) client).getCredentialsProvider()
.setCredentials(as, upc);
BasicHttpContext localContext = new BasicHttpContext();
BasicScheme basicAuth = new BasicScheme();
localContext.setAttribute("preemptive-auth", basicAuth);
HttpHost targetHost = new HttpHost(host, 80, "http");
HttpGet httpget = new HttpGet(urlApiCall_FindAllRepositories);
HttpResponse response = client.execute(targetHost, httpget,
localContext);
HttpEntity entity = response.getEntity();
Object content = EntityUtils.toString(entity);
String decoded_password = new String(Base64.decode(content.toString(), Base64.DEFAULT));
System.out.println("RESULT: " + decoded_password);
Log.d(MY_APP_TAG, content.toString());
System.out.println(content.toString().getBytes().toString());
} catch (Exception e) {
e.printStackTrace();
Log.d(MY_APP_TAG, "Error: " + e);
}
}
}
コードからわかるように、私は認証を渡し、base 64 を使用して結果をデコードしようとしています。奇妙なことは、これが返されることです:
07-04 21:55:01.726: D/gralloc_goldfish(639): GPU エミュレーションなしのエミュレーターが検出されました。
07-04 21:58:19.256: I/dalvikvm(753): threadid=3: シグナル 3 に反応しています
07-04 21:58:19.297: I/dalvikvm(753): スタック トレースを「/data/anr/traces.txt」に書き込みました
07-04 21:58:19.656: W/DefaultRequestDirector(753): 認証エラー: これらのチャレンジのいずれにも応答できません: {}
07-04 21:58:19.676: I/System.out(753): 結果: �N�7���|�22�</p>
07-04 21:58:19.676: D/basic.authentication(753): ������������1Â0��÷¼ÂÊÒ!
07-04 21:58:19.676: D/basic.authentication(753): &ÄÄʬÄ4L¶£¿²îÎÊ
07-04 21:58:19.676: D/basic.authentication(753): 2Ëzc¦ùN&]]jð@6ÚOçð ��ñIf¸PÄKì^¨yMè¡é(½{ÕjÑ< `J£/C _RÇÝöLÿãããaã÷²� ������
07-04 21:58:19.676: I/System.out(753): [B@412d87a0
07-04 21:58:19.746: I/dalvikvm(753): threadid=3: シグナル 3 に反応しています
07-04 21:58:19.756: I/dalvikvm(753): スタック トレースを「/data/anr/traces.txt」に書き込みました
07-04 21:58:19.946: D/gralloc_goldfish(753): GPU エミュレーションなしのエミュレーターが検出されました。
ご覧のとおり、奇妙なコードが返されますが、認証エラーがあることも示されています。
何が起こっているのかを理解しようとするのを手伝ってくれる人はいますか?