Java 通过Android Studio中的AsyncTask将全局变量传递到php文件

Java 通过Android Studio中的AsyncTask将全局变量传递到php文件,java,android,android-asynctask,Java,Android,Android Asynctask,我目前正在从远程数据库填充一个RRECELERVIEW,但只希望根据用户ID查询数据库中的日期。我在应用程序的LoginActivity中将用户ID指定为全局变量,但我不确定从我的DateActivity将该信息传递到php页面的何处 我的DateActivity代码如下: import android.app.ProgressDialog; import android.os.AsyncTask; import android.os.Bundle; import android.support

我目前正在从远程数据库填充一个RRECELERVIEW,但只希望根据用户ID查询数据库中的日期。我在应用程序的LoginActivity中将用户ID指定为全局变量,但我不确定从我的DateActivity将该信息传递到php页面的何处

我的DateActivity代码如下:

import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.widget.Toast;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;

public class DateActivity extends AppCompatActivity {

public static String globex_num;

// CONNECTION_TIMEOUT and READ_TIMEOUT are in milliseconds
public static final int CONNECTION_TIMEOUT = 10000;
public static final int READ_TIMEOUT = 15000;
private RecyclerView mRVDateList;
private AdapterDate mAdapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_date);
    //Make call to AsyncTask
    new AsyncFetch().execute();
}

private class AsyncFetch extends AsyncTask<String, String, String> {
    ProgressDialog pdLoading = new ProgressDialog(DateActivity.this);
    HttpURLConnection conn;
    URL url = null;

    @Override
    protected void onPreExecute() {
        super.onPreExecute();

        //this method will be running on UI thread
        pdLoading.setMessage("\tLoading...");
        pdLoading.setCancelable(false);
        pdLoading.show();

    }

    @Override
    protected String doInBackground(String... params) {
        try {

            url = new URL("thephpfile.com");

        } catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            return e.toString();
        }
        try {

            // Setup HttpURLConnection class to send and receive data from php and mysql
            conn = (HttpURLConnection) url.openConnection();
            conn.setReadTimeout(READ_TIMEOUT);
            conn.setConnectTimeout(CONNECTION_TIMEOUT);
            conn.setRequestMethod("GET");

            // setDoOutput to true as we recieve data from json file
            conn.setDoOutput(true);

        } catch (IOException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
            return e1.toString();
        }

        try {

            int response_code = conn.getResponseCode();

            // Check if successful connection made
            if (response_code == HttpURLConnection.HTTP_OK) {

                // Read data sent from server
                InputStream input = conn.getInputStream();
                BufferedReader reader = new BufferedReader(new InputStreamReader(input));
                StringBuilder result = new StringBuilder();
                String line;


                while ((line = reader.readLine()) != null) {
                    result.append(line);
                }

                // Pass data to onPostExecute method
                return (result.toString());

            } else {

                return ("unsuccessful");
            }

        } catch (IOException e) {
            e.printStackTrace();
            return e.toString();
        } finally {
            conn.disconnect();
        }


    }

    @Override
    protected void onPostExecute(String result) {

        //this method will be running on UI thread

        pdLoading.dismiss();
        List<DataDate> data=new ArrayList<>();

        pdLoading.dismiss();
        try {

            JSONArray jsonArray = new JSONArray(result);

            // Extract data from json and store into ArrayList as class objects
            for(int i=0;i<jsonArray.length();i++){
                JSONObject json_data = jsonArray.getJSONObject(i);
                DataDate dateData = new DataDate();
                dateData.date= json_data.getString("date");
                data.add(dateData);
            }

            // Setup and Handover data to recyclerview
            mRVDateList = (RecyclerView)findViewById(R.id.dateList);
            mAdapter = new AdapterDate(DateActivity.this, data);
            mRVDateList.setAdapter(mAdapter);
            mRVDateList.setLayoutManager(new LinearLayoutManager(DateActivity.this));

        } catch (JSONException e) {
            Toast.makeText(DateActivity.this, e.toString(), Toast.LENGTH_LONG).show();
        }

    }

}
}
导入android.app.ProgressDialog;
导入android.os.AsyncTask;
导入android.os.Bundle;
导入android.support.v7.app.AppActivity;
导入android.support.v7.widget.LinearLayoutManager;
导入android.support.v7.widget.RecyclerView;
导入android.widget.Toast;
导入org.json.JSONArray;
导入org.json.JSONException;
导入org.json.JSONObject;
导入java.io.BufferedReader;
导入java.io.IOException;
导入java.io.InputStream;
导入java.io.InputStreamReader;
导入java.net.HttpURLConnection;
导入java.net.MalformedURLException;
导入java.net.URL;
导入java.util.ArrayList;
导入java.util.List;
公共类DateActivity扩展了AppCompatActivity{
公共静态字符串globex_num;
//连接超时和读取超时以毫秒为单位
公共静态最终int连接\u超时=10000;
公共静态最终整型读取超时=15000;
私人回收站;
私人适配器Date mAdapter;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_date);
//调用AsyncTask
新建AsyncFetch().execute();
}
私有类AsyncFetch扩展了AsyncTask{
ProgressDialog pdLoading=新建ProgressDialog(DateActivity.this);
httpurl连接连接;
URL=null;
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
//此方法将在UI线程上运行
pdLoading.setMessage(“\t加载…”);
pdLoading.setCancelable(假);
pdLoading.show();
}
@凌驾
受保护的字符串doInBackground(字符串…参数){
试一试{
url=新url(“theppfile.com”);
}捕获(格式错误){
//TODO自动生成的捕捉块
e、 printStackTrace();
返回e.toString();
}
试一试{
//设置HttpURLConnection类以从php和mysql发送和接收数据
conn=(HttpURLConnection)url.openConnection();
conn.setReadTimeout(读取超时);
连接设置连接超时(连接超时);
conn.setRequestMethod(“GET”);
//当我们从json文件接收数据时,将setDoOutput设置为true
连接设置输出(真);
}捕获(IOE1异常){
//TODO自动生成的捕捉块
e1.printStackTrace();
返回e1.toString();
}
试一试{
int response_code=conn.getResponseCode();
//检查连接是否成功
if(response\u code==HttpURLConnection.HTTP\u OK){
//读取从服务器发送的数据
InputStream input=conn.getInputStream();
BufferedReader reader=新的BufferedReader(新的InputStreamReader(输入));
StringBuilder结果=新建StringBuilder();
弦线;
而((line=reader.readLine())!=null){
结果。追加(行);
}
//将数据传递给onPostExecute方法
返回(result.toString());
}否则{
返回(“未成功”);
}
}捕获(IOE异常){
e、 printStackTrace();
返回e.toString();
}最后{
连接断开();
}
}
@凌驾
受保护的void onPostExecute(字符串结果){
//此方法将在UI线程上运行
pdLoading.disclose();
列表数据=新的ArrayList();
pdLoading.disclose();
试一试{
JSONArray JSONArray=新JSONArray(结果);
//从json中提取数据并作为类对象存储到ArrayList中

对于(inti=0;i,我通过链接传递它来解决问题

url = new URL(www.thephpfile.php?userID=" + LoginActivity.userID);
在php文件开始时,我执行了以下操作:

$userID = $_GET['userID'];

请不要把你的整个代码库都放在这个问题上…只放你认为与问题相关的部分