NameValuePair, HttpParams, HttpConnection Params obsolète sur la demande de serveur de classe pour la connexion de l'app
Première fois de poser une question ici, et de nouveau à la programmation android. Je suis en suivant une ligne youtube tutoriel pour créer un compte de connexion de l'utilisateur "Tonikami TV". Tout va bien avec l'app sauf quand il s'agit de la serverRequests classe. Je reçois ce que NameValuePair
, HttpParams
, etc. sont déconseillés que je comprends à être dépassé et non pris en charge depuis l'API 22. J'ai cherché quelques fixes ou des solutions de rechange, mais ne peuvent pas vraiment faire sens et comment je pourrais les appliquer à mon code. Toute aide serait grandement appréciée. Merci 🙂
@Override
protected Void doInBackground(Void... params) {
ArrayList<NameValuePair> dataToSend = new ArrayList<>();
dataToSend.add(new BasicNameValuePair("firstname", user.FirstName));
dataToSend.add(new BasicNameValuePair("lastname", user.LastName));
dataToSend.add(new BasicNameValuePair("age", user.Age + ""));
dataToSend.add(new BasicNameValuePair("emailaddress", user.EmailAddress));
dataToSend.add(new BasicNameValuePair("password", user.Password));
//possible alternative code found on stack overflow don't know exactly what to do from here.
ContentValues values= new ContentValues();
values.put("firstname", user.FirstName);
values.put("lastname", user.LastName);
values.put("age", user.Age + "");
values.put("emailaddress",user.EmailAddress);
values.put("password",user.Password);
//
HttpParams httpRequestParams = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpRequestParams, CONNECTION_TIMEOUT);
HttpConnectionParams.setSoTimeout(httpRequestParams, CONNECTION_TIMEOUT);
HttpClient client = new DefaultHttpClient(httpRequestParams);
HttpClient post = new HttpPost(SERVER_ADDRESS + "Register.php");
try{
post.setEntity(new URLEncoderFormEntity(dataToSend));
client.execute(post);
}catch (Exception e){
e.printStackTrace();
}
return null;
}
Ici est l'ensemble du code dans le ServerRequests classe. Toutes mes excuses si son assez long.
public class ServerRequests {
ProgressDialog progressDialog;
public static final int CONNECTION_TIMEOUT = 1000 * 15;
public static final String SERVER_ADDRESS = "http://lok8.hostingsiteforfree.com";
public ServerRequests(Context context){
progressDialog = new ProgressDialog(context);
progressDialog.setCancelable(false);
progressDialog.setTitle("Processing");
progressDialog.setMessage("Please Wait...");
}
public void storeUserDataInBackground(User user, GetUserCallback userCallback){
progressDialog.show();
new StoreUserDataAsyncTask(user,userCallback).execute();
}
public void fetchUserDataInBackground(User user, GetUserCallback callback) {
progressDialog.show();
new fetchUserDataAsyncTask(user, callback).execute();
}
public class StoreUserDataAsyncTask extends AsyncTask<Void, Void, Void>{
User user;
GetUserCallback userCallback;
public StoreUserDataAsyncTask(User user, GetUserCallback userCallback){
this.user = user;
this.userCallback = userCallback;
}
@Override
protected Void doInBackground(Void... params) {
ArrayList<NameValuePair> dataToSend = new ArrayList<>();
dataToSend.add(new BasicNameValuePair("firstname", user.FirstName));
dataToSend.add(new BasicNameValuePair("lastname", user.LastName));
dataToSend.add(new BasicNameValuePair("age", user.Age + ""));
dataToSend.add(new BasicNameValuePair("emailaddress", user.EmailAddress));
dataToSend.add(new BasicNameValuePair("password", user.Password));
//possible alternative code found on stack overflow don't know exactly what to do from here.
ContentValues values= new ContentValues();
values.put("firstname", user.FirstName);
values.put("lastname", user.LastName);
values.put("age", user.Age + "");
values.put("emailaddress",user.EmailAddress);
values.put("password",user.Password);
//
HttpParams httpRequestParams = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpRequestParams, CONNECTION_TIMEOUT);
HttpConnectionParams.setSoTimeout(httpRequestParams, CONNECTION_TIMEOUT);
HttpClient client = new DefaultHttpClient(httpRequestParams);
HttpClient post = new HttpPost(SERVER_ADDRESS + "Register.php");
try{
post.setEntity(new URLEncoderFormEntity(dataToSend));
client.execute(post);
}catch (Exception e){
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
progressDialog.dismiss();
userCallback.done(null);
super.onPostExecute(aVoid);
}
}
public class fetchUserDataAsyncTask extends AsyncTask<Void, Void, User> {
User user;
GetUserCallback userCallback;
public fetchUserDataAsyncTask(User user, GetUserCallback userCallback) {
this.user = user;
this.userCallback = userCallback;
}
@Override
protected User doInBackground(Void... params) {
ArrayList<NameValuePair> dataToSend = new ArrayList<>();
dataToSend.add(new BasicNameValuePair("emailaddress", user.EmailAddress));
dataToSend.add(new BasicNameValuePair("password", user.Password));
HttpParams httpRequestParams = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpRequestParams, CONNECTION_TIMEOUT);
HttpConnectionParams.setSoTimeout(httpRequestParams, CONNECTION_TIMEOUT);
HttpClient client = new DefaultHttpClient(httpRequestParams);
HttpClient post = new HttpPost(SERVER_ADDRESS + "FetchUserData.php");
User returnedUser = null;
try{
post.setEntity(new URLEncoderFormEntity(dataToSend));
HttpResponse httpResponse = client.execute(post);
HttpEntity entity = httpResponse.getEntity();
String result = EntityUtils.toString(entity);
JSONObject jObject = new JSONObject(result);
if(jObject.length()== 0){
returnedUser = null;
} else {
String firstname = jObject.getString("firstname");
String lastname = jObject.getString("lastname");
int age = jObject.getInt("age");
returnedUser = new User(firstname, lastname, age, user.FirstName, user.LastName, user.Age);
}
}catch (Exception e){
e.printStackTrace();
}
return returnedUser;
}
@Override
protected void onPostExecute(User returnedUser) {
progressDialog.dismiss();
userCallback.done(returnedUser);
super.onPostExecute(returnedUser);
}
}
}
Vous pouvez utiliser
HttpURLConnection
à la place. lien
OriginalL'auteur DarthVader | 2015-06-09
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser le code suivant qui utilise le standard java et android méthodes
La getEncodedData méthode (Simple à comprendre)
OriginalL'auteur Gagandeep Singh