Альтернативные методы для HttpClient, HttpPost, HttpResponse, HttpEntity и т. Д. В Android
Я пытаюсь создать приложение для входа, которое получает данные из онлайн-базы данных. Я нашел учебник в Интернете, но большинство методов устарели. Поэтому я хотел бы знать, как найти альтернативные методы для устаревших.
После того, как я адаптировал код из учебника к своему проекту, у меня есть этот код на моей MainActivity:
public class MainActivity extends AppCompatActivity {
Button b1;
EditText ed1,ed2;
public static final String USER_NAME = "USERNAME";
String username;
String password;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ed1 = (EditText) findViewById(R.id.editText);
ed2 = (EditText) findViewById(R.id.editText2);
}
public void invokeLogin(View view){
username = ed1.getText().toString();
password = ed2.getText().toString();
login(username,password);
}
private void login(final String username,String password){
class LoginAsync extends AsyncTask<String, Void, String>{
private Dialog loadingDialog;
@Override
protected void onPreExecute() {
super.onPreExecute();
loadingDialog = ProgressDialog.show(MainActivity.this,"Please wait","Loading...");
}
@Override
protected String doInBackground(String... params){
String uname = params[0];
String pass = params[1];
InputStream is = null;
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("username",uname));
nameValuePairs.add(new BasicNameValuePair("password",pass));
String result = null;
try{
HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost("http://example.com/login.php");
httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpClient.execute(httpPost);
HttpEntity entity = response.getEntity();
is = entity.getContent();
BufferReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"),8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null)
{
sb.append(line + "\n");
}
result = sb.toString();
} catch (ClientProtocolExeption e){
e.printStackTrace();
} catch (UnsupportedEncodingException e){
e.printStackTrace();
}catch (IOException e){
e.printStackTrace();
}
return result;
}
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
Поэтому я получаю "Не удается разрешить метод / символ" для следующих:
NameValuePair
BasicNameValuePair
HttpClient
DefaultHttpClient
HttpPost
httpPost.setEntity
UrlEncondedFormEntity
HttpResponse
httpClient.execute
HttpEntity
response.getEntity
entity.getContent
BufferReader
reader.readLine
ClientProtocolExeption
e.printStackTrace
Я довольно новичок в разработке для Android, и я потерян здесь.
Я пытался заменить это:
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("username",uname));
nameValuePairs.add(new BasicNameValuePair("password",pass));
С этим (я прав):
HashMap<String,String> nameValuePairs = new HashMap<>();
nameValuePairs.put("username",params[0]);
nameValuePairs.put("password",params[1]);
2 ответа
Вы хотите проверить мой ответ на этот вопрос. Объясняю как пользоваться HttpURLConnection
сделать веб-запрос и как настроить необходимые обратные вызовы для получения данных ответа.
Apache HttpClient библиотека удалена из Android SDK 23 уровня API. SDK обеспечивает HttpUrlConnection и рекомендуется Android.
http://developer.android.com/reference/java/net/HttpURLConnection.html
Например: http://www.tutorialspoint.com/android/android_network_connection.htm