Web サーバーにログインしようとしていて、コードは正しく実行されていましたが、その周りにログイン ページを作成しようとすると、問題が発生し始めました。
誰かが追加のコードを見たい場合は、Eclipse Android ツールで提供されているサンプルのログイン ページを使用していました。
OnClickHandler 内から実行すると、DefaultHttpClient がタイムアウトしたように見えます。何も返さないか、返された場合は「ピア証明書がありません」が返されますが、これは間違っていることがわかっています。
/**
* Keep track of the login task to ensure we can cancel it if requested.
*/
private UserLoginTask mAuthTask = null;
... ものを設定する
mAuthTask = new UserLoginTask();
findViewById(R.id.sign_in_button).setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View view) {
if(attemptLogin()){
mAuthTask.execute();
}
}
});
//mAuthTask = new UserLoginTask();
//mAuthTask.execute(); // Works if called from here.
関連する AsyncTask コードは次のとおりです。
public class UserLoginTask extends AsyncTask<String, Void, String> {
@Override
protected void onPreExecute() {
Log.i(TAG,"Thread name (from preexecute) : " + Thread.currentThread().getName());
}
protected String doInBackground(String... urls) {
DefaultHttpClient client = AppHttpClient.getClient();
HttpPost httppost = new HttpPost("https://euw.leagueoflegends.com/user/login");
String result = "";
try {
// Add your data
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(3);
nameValuePairs.add(new BasicNameValuePair("name", "exampleusername"));
nameValuePairs.add(new BasicNameValuePair("pass", "blahblah"));
nameValuePairs.add(new BasicNameValuePair("form_id", "user_login"));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
// Execute HTTP Post Request
Log.i(TAG,"Thread name (passed into doInBackground) : " + urls[0]);
Log.i(TAG,"Thread name (from doInBackground) : " + Thread.currentThread().getName());
HttpResponse response2 = client.execute(httppost);
InputStream in = response2.getEntity().getContent();
//result = readStream(in);
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return result;
}
@Override
protected void onPostExecute(final String success) {
mAuthTask = null;
showProgress(false);
}
@Override
protected void onCancelled() {
mAuthTask = null;
showProgress(false);
}
}