2015-12-11 59 views
0

我编写的用于向000webhost上的服务器发送请求的java类不起作用。我得到不推荐的http元素,所以我的代码不会编译。我尝试过改变我的API级别,但没有任何用处,它只是阻止了我的gradle的构建。 下面是我在谈论的Java类:Android Studio中的服务器请求类

package com.mu.cs.loginregister; 

import android.app.ProgressDialog; 
import android.content.Context; 
import android.os.AsyncTask; 

import org.apache.http.params.HttpConnectionParams; 
import org.apache.http.params.HttpParams; 
import org.json.JSONObject; 
import java.util.HashMap; 
import java.util.Map; 

/** 
* Created by John on 10/12/2015. 
*/ 
public class ServerRequests { 
ProgressDialog progressDialog; 
public static final int CONNECTION_TIMEOUT = 1000 * 15; 
public static final String SERVER_ADDRESS = "http://www.thenameofmyserver.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){ 

     Map<String, String> dataToSend = new HashMap<>(); 
     dataToSend.put("name", user.name); 
     dataToSend.put("age", user.age + ""); 
     dataToSend.put("username", user.username); 
     dataToSend.put("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 + "Register.php"); 

     try{ 
      post.setEntity(new UrlEncodedFormEntity(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) { 
     Map<String, String> dataToSend = new HashMap<>(); 
     dataToSend.put("username", user.username); 
     dataToSend.put("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){ 
       user = null; 
      }else{ 
       String name =jObject.getString("name"); 
       int age = jObject.getInt("age"); 

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

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

     return returnedUser; 
    } 

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

} 
} 

我还写了两个PHP文件在我的数据库,该代码将与交谈存储。

PHP1:

<?php 
    $con=mysqli_connect("localhost","my_user","my_password","my_db"); 

    $name=$_POST["name"]; 
    $age=$_POST["age"]; 
    $password=$_POST["password"]; 
    $username=$_POST["username"]; 

    $statement = mysqli_prepare($con, "INSERT INTO User (name, age, username, password) VALUES (?, ?, ?, ?) "); 
    mysqli_stmt_bind_param($statement, "siss", $name, $age, $username, $password); 
    mysqli_stmt_execute($statement); 

    mysqli_stmt_close($statment); 

    mysqli_close($con); 
?> 

PHP2:

<?php 
    $con=mysqli=connect("localhost","my_user","my_password","my_db); 

    $password = $_POST["password"]; 
    $username = $_POST["username"]; 

    $statement = mysqli_prepare($con, "SELECT" * FROM User WHERE username = ? AND password = ?"); 
    mysqli_stmt_bind_param($statement, "ss", $username, $password); 
    mysqli_stmt_execute($statement); 

    mysqli_stmt_store_result($statement); 
    mysqli_stmt_bind_result($statment, $userID, $name, $age, $username, $password); 

    $user = array(); 

    while(mysqli_stmt_fetch($statement)){ 
     $user[name] = $name; 
     $user[age] = $age; 
     $user[username] = $username; 
     $user[password] = $password; 
    } 

    echo json_encode($user); 

    mysqli_stmt_close($con); 

    mysqli_close($con); 
?> 

与这是为什么不工作将非常感激任何帮助。谢谢

+0

为什么不尝试使用非过时的http元素? –

回答