2016-02-08 111 views
-2

我正在尝试进行登录并注册我的Android应用程序。我在HttpParams遇到问题。我正在关注Tonikami在Youtube上的教程。我只是Android Studio的新手。这只是我知道的过程。非常感谢您的帮助。 :(HttpParams已弃用。我该怎么办?

public class ServerRequests { 
ProgressDialog progressDialog; 
public static final int CONNECTION_TIMEOUT = 1000 * 15; 
public static final String SERVER_ADDRESS = "http://mywebsite.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 fetchUserDataAsyncTask(User user, GetUserCallback userCallBack) { 
    progressDialog.show(); 
    new fetchUserDataAsyncTask(user, userCallBack).execute(); 
} 

/** 
* parameter sent to task upon execution progress published during 
* background computation result of the background computation 
*/ 

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("name", user.name)); 
     dataToSend.add(new BasicNameValuePair("username", user.username)); 
     dataToSend.add(new BasicNameValuePair("password", user.password)); 
     dataToSend.add(new BasicNameValuePair("age", user.age + "")); 

     HttpParams httpRequestParams = getHttpRequestParams(); 

     HttpClient client = new DefaultHttpClient(httpRequestParams); 
     HttpPost post = new HttpPost(SERVER_ADDRESS + "Register.php"); 

     try { 
      post.setEntity(new UrlEncodedFormEntity(dataToSend)); 
      client.execute(post); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 

     return null; 
    } 

    private HttpParams getHttpRequestParams() { 
     HttpParams httpRequestParams = new BasicHttpParams(); 
     HttpConnectionParams.setConnectionTimeout(httpRequestParams, 
       CONNECTION_TIMEOUT); 
     HttpConnectionParams.setSoTimeout(httpRequestParams, 
       CONNECTION_TIMEOUT); 
     return httpRequestParams; 
    } 

    @Override 
    protected void onPostExecute(Void result) { 
     super.onPostExecute(result); 
     progressDialog.dismiss(); 
     userCallBack.done(null); 
    } 

} 

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("username", user.username)); 
     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); 
     HttpPost post = new HttpPost(SERVER_ADDRESS 
       + "FetchUserData.php"); 

     User returnedUser = null; 

     try { 
      post.setEntity(new UrlEncodedFormEntity(dataToSend)); 
      HttpResponse httpResponse = client.execute(post); 

      HttpEntity entity = httpResponse.getEntity(); 
      String result = EntityUtils.toString(entity); 
      JSONObject jObject = new JSONObject(result); 

      if (jObject.length() != 0){ 
       Log.v("happened", "2"); 
       String name = jObject.getString("name"); 
       int age = jObject.getInt("age"); 

       returnedUser = new User(name, age, user.username, 
         user.password); 
      } 

     } catch (Exception e) { 
      e.printStackTrace(); 
     } 

     return returnedUser; 
    } 

    @Override 
    protected void onPostExecute(User returnedUser) { 
     super.onPostExecute(returnedUser); 
     progressDialog.dismiss(); 
     userCallBack.done(returnedUser); 
    } 
} 

}”

+2

使用的URLConnection – Aziz

+0

使用OkHttpClient :d – EpicPandaForce

回答

0
URL url = new URL("http://google.co.in"); 
      HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
      conn.setRequestMethod("POST"); 
      conn.setConnectTimeout(2000); 
      is = conn.getInputStream(); 

使用上面的代码,而不是贬值的HttpParams

而对于通过post数据,做这样的

Uri.Builder builder = new Uri.Builder(); 
    builder.appendQueryParameter("param1", "paramvalue1"); 
      builder.appendQueryParameter("param2", "paramvalue2"); 

String query = builder.build().getEncodedQuery(); 
      OutputStream os = conn.getOutputStream(); 
      BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(os, "UTF-8")); 
      writer.write(query); 
      writer.flush(); 
      writer.close(); 
      os.close(); 
      conn.connect(); 
      is = conn.getInputStream(); 
相关问题