そのため、投稿を受信していることがわかっているURLにログイン要求を投稿するアプリを作成しています。認証された場合、メソッドはtrueを返す必要があります。これはこれまでの私の方法であり、毎回 false を返します。何が間違っているのでしょうか?
public Boolean authenticate_user(String username, String password) {
Boolean success = false;
// Create a new HttpClient and Post Header
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("my url");
try {
// Add your data
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
nameValuePairs.add(new BasicNameValuePair("username", username));
nameValuePairs.add(new BasicNameValuePair("password", password));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
// Execute HTTP Post Request
HttpResponse response = httpclient.execute(httppost);
// Response
HttpEntity entity = response.getEntity();
if (entity != null) {
InputStream instream = entity.getContent();
JSONTokener tokener = new JSONTokener(convertStreamToString(instream));
JSONObject root = new JSONObject(tokener);
success = root.getBoolean("success");
Integer id = root.getInt("id");
String auth_token = root.getString("auth_token");
String first_name = root.getString("first_name");
//Save data to sharedprefs
SharedPreferences.Editor editor = getPreferences(MODE_PRIVATE).edit();
editor.putString("hgtoken",auth_token);
editor.commit();
}
} catch (ClientProtocolException e) {
} catch (IOException e) {
} catch (JSONException e) {
}
if(success == true) {
return true;
} else {
return false;
}
}
また、私の convertStreamToString メソッドは次のとおりです
private static String convertStreamToString(InputStream is) {
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
StringBuilder sb = new StringBuilder();
String line = null;
try {
while ((line = reader.readLine()) != null) {
sb.append(line + "n");
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return sb.toString();
}