Java 无法将多个值从后台do返回到后期执行

Java 无法将多个值从后台do返回到后期执行,java,android,return-value,Java,Android,Return Value,在这种情况下,有没有关于返回多个值的想法?我想在post execute方法中获取姓名、用户名和年龄 protected String doInBackground(String... params) { try{ URL url = new URL (strUrl); HttpURLConnection con = (HttpURLConnection) url.openConnection(); con.setRequestMethod("POST"); co

在这种情况下,有没有关于返回多个值的想法?我想在post execute方法中获取姓名、用户名和年龄

protected String doInBackground(String... params) {
try{
    URL url = new URL (strUrl);
    HttpURLConnection con = (HttpURLConnection) url.openConnection();
    con.setRequestMethod("POST");
    con.connect();

    //get response from server
    BufferedReader bf = new BufferedReader(new InputStreamReader(con.getInputStream()));
    String value = bf.readLine();


    String json = value;
    JSONObject parentObject = new JSONObject(json);
    JSONArray parentArray = parentObject.getJSONArray("Data");
    JSONObject finalObject = parentArray.getJSONObject(parentArray.length()-1);

    String name = finalObject.getString("NAME");
    String username = finalObject.getString("USERNAME");
    String age = finalObject.getString("AGE");

    return name,username,age; //this part basically dont works

}catch(Exception e){
    System.out.println(e);
}

像这样创建一个模型类

public class Model {
    private String username,name,age;

    public Model(String username, String name, String age) {
        this.username = username;
        this.name = name;
        this.age = age;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }
}
并将其用于列表并修改您的
doInBackground()
方法

protected Model doInBackground(String... params) {
   try{
        URL url = new URL (strUrl);
        HttpURLConnection con = (HttpURLConnection) url.openConnection();
        con.setRequestMethod("POST");
        con.connect();

        //get response from server
        BufferedReader bf = new BufferedReader(new InputStreamReader(con.getInputStream()));
        String value = bf.readLine();
        String json = value;
        JSONObject parentObject = new JSONObject(json);
        JSONArray parentArray = parentObject.getJSONArray("Data");
        JSONObject finalObject = parentArray.getJSONObject(parentArray.length()-1);

        String name = finalObject.getString("NAME");
        String username = finalObject.getString("USERNAME");
        String age = finalObject.getString("AGE");

        return new Model(username,name,age);

       }catch(Exception e){
            System.out.println(e);
       }
 }
onPostExecute()
使用此

@Override
protected void onPostExecute(Model m) {
    super.onPostExecute(m);
    String name=m.getName(); 
    String age=m.getAge(); 
    String username=m.getUsername(); 
}

像这样创建一个模型类

public class Model {
    private String username,name,age;

    public Model(String username, String name, String age) {
        this.username = username;
        this.name = name;
        this.age = age;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }
}
并将其用于列表并修改您的
doInBackground()
方法

protected Model doInBackground(String... params) {
   try{
        URL url = new URL (strUrl);
        HttpURLConnection con = (HttpURLConnection) url.openConnection();
        con.setRequestMethod("POST");
        con.connect();

        //get response from server
        BufferedReader bf = new BufferedReader(new InputStreamReader(con.getInputStream()));
        String value = bf.readLine();
        String json = value;
        JSONObject parentObject = new JSONObject(json);
        JSONArray parentArray = parentObject.getJSONArray("Data");
        JSONObject finalObject = parentArray.getJSONObject(parentArray.length()-1);

        String name = finalObject.getString("NAME");
        String username = finalObject.getString("USERNAME");
        String age = finalObject.getString("AGE");

        return new Model(username,name,age);

       }catch(Exception e){
            System.out.println(e);
       }
 }
onPostExecute()
使用此

@Override
protected void onPostExecute(Model m) {
    super.onPostExecute(m);
    String name=m.getName(); 
    String age=m.getAge(); 
    String username=m.getUsername(); 
}
试试这个:

protected String doInBackground(String... params) {
try{
    URL url = new URL (strUrl);
    HttpURLConnection con = (HttpURLConnection) url.openConnection();
    con.setRequestMethod("POST");
    con.connect();

    //get response from server
    BufferedReader bf = new BufferedReader(new InputStreamReader(con.getInputStream()));
    String value = bf.readLine();


    String json = value;
    JSONObject parentObject = new JSONObject(json);
    JSONArray parentArray = parentObject.getJSONArray("Data");
    JSONObject finalObject = parentArray.getJSONObject(parentArray.length()-1);

    String name = finalObject.getString("NAME");
    String username = finalObject.getString("USERNAME");
    String age = finalObject.getString("AGE");

    return name+","+username+","+age;

}catch(Exception e){
    System.out.println(e);
}

@Override
protected void onPostExecute(String s) {
    super.onPostExecute(s);
    String[] array = s.split(",");
    String name = array[0];
    String username = array[1];
    String age = array[2];


 }
试试这个:

protected String doInBackground(String... params) {
try{
    URL url = new URL (strUrl);
    HttpURLConnection con = (HttpURLConnection) url.openConnection();
    con.setRequestMethod("POST");
    con.connect();

    //get response from server
    BufferedReader bf = new BufferedReader(new InputStreamReader(con.getInputStream()));
    String value = bf.readLine();


    String json = value;
    JSONObject parentObject = new JSONObject(json);
    JSONArray parentArray = parentObject.getJSONArray("Data");
    JSONObject finalObject = parentArray.getJSONObject(parentArray.length()-1);

    String name = finalObject.getString("NAME");
    String username = finalObject.getString("USERNAME");
    String age = finalObject.getString("AGE");

    return name+","+username+","+age;

}catch(Exception e){
    System.out.println(e);
}

@Override
protected void onPostExecute(String s) {
    super.onPostExecute(s);
    String[] array = s.split(",");
    String name = array[0];
    String username = array[1];
    String age = array[2];


 }
试试这个:

        String name="1";
        String username="b";
        String age="mn";

        String fullValue=name+"#"+username+"#"+age;
        return fullValue;
现在在OnpostExecute中:

    String[] gn=fullValue.split("#");
    for (int i=0;i<gn.length;i++){
        Log.e("values",gn[i]);
    }
String[]gn=fullValue.split(“#”);
对于(int i=0;i请尝试以下方法:

        String name="1";
        String username="b";
        String age="mn";

        String fullValue=name+"#"+username+"#"+age;
        return fullValue;
现在在OnpostExecute中:

    String[] gn=fullValue.split("#");
    for (int i=0;i<gn.length;i++){
        Log.e("values",gn[i]);
    }
String[]gn=fullValue.split(“#”);

对于(int i=0;i选项1:
将结果附加到一个带有分隔符的字符串中,然后将其拆分
返回姓名+“~”+用户名+“~”+年龄;

要拆分它们:
String[]separated=YOURSTRING.Split(“~”);
并使用
separated[0]、separated[1]和separated[2]获取值。

选项2:
上课

public class User {
String name, username, age;

public User(String name, String username, String age) {
    this.name = name;
    this.username = username;
    this.age = age;
}
将doInBackground的返回值更改为
User
,并返回用户对象而不是字符串
返回新用户(姓名、用户名、年龄);

选项3:

返回一个数组或字符串列表

List<String> data = new ArrayList<String>
data.add(user);
data.add(username);
data.add(age);
List data=new ArrayList
添加数据(用户);
添加数据(用户名);
数据。添加(年龄);

选项1:
将结果附加到一个带有分隔符的字符串中,然后将其拆分
返回姓名+“~”+用户名+“~”+年龄;

要拆分它们:
String[]separated=YOURSTRING.Split(“~”);
并使用
separated[0]、separated[1]和separated[2]获取值。

选项2:
上课

public class User {
String name, username, age;

public User(String name, String username, String age) {
    this.name = name;
    this.username = username;
    this.age = age;
}
将doInBackground的返回值更改为
User
,并返回用户对象而不是字符串
返回新用户(姓名、用户名、年龄);

选项3:

返回一个数组或字符串列表

List<String> data = new ArrayList<String>
data.add(user);
data.add(username);
data.add(age);
List data=new ArrayList
添加数据(用户);
添加数据(用户名);
数据。添加(年龄);

您可以直接从

String value = bf.readLine();

在onPostExecute()中,您可以解析Json

,您可以直接从中发送

String value = bf.readLine();

在onPostExecute()中,您可以解析Json

将该Json字符串传递到post-execute方法中,然后解析它

protected String doInBackground(String... params) {
try{
    URL url = new URL (strUrl);
    HttpURLConnection con = (HttpURLConnection) url.openConnection();
    con.setRequestMethod("POST");
    con.connect();

    //get response from server
    BufferedReader bf = new BufferedReader(new InputStreamReader(con.getInputStream()));
    String value = bf.readLine();
    return vaue;

}catch(Exception e){
    System.out.println(e);
}


@Override
protected void onPostExecute(String s) {
        super.onPostExecute(s);

    String json = s;
    JSONObject parentObject = new JSONObject(json);
    JSONArray parentArray = parentObject.getJSONArray("Data");
    JSONObject finalObject = parentArray.getJSONObject(parentArray.length()-1);

    String name = finalObject.getString("NAME");
    String username = finalObject.getString("USERNAME");
    String age = finalObject.getString("AGE");

}

将该json字符串传递到post execute方法中,然后解析它

protected String doInBackground(String... params) {
try{
    URL url = new URL (strUrl);
    HttpURLConnection con = (HttpURLConnection) url.openConnection();
    con.setRequestMethod("POST");
    con.connect();

    //get response from server
    BufferedReader bf = new BufferedReader(new InputStreamReader(con.getInputStream()));
    String value = bf.readLine();
    return vaue;

}catch(Exception e){
    System.out.println(e);
}


@Override
protected void onPostExecute(String s) {
        super.onPostExecute(s);

    String json = s;
    JSONObject parentObject = new JSONObject(json);
    JSONArray parentArray = parentObject.getJSONArray("Data");
    JSONObject finalObject = parentArray.getJSONObject(parentArray.length()-1);

    String name = finalObject.getString("NAME");
    String username = finalObject.getString("USERNAME");
    String age = finalObject.getString("AGE");

}
创建一个模型类

public class UserDataModel {
    String username,name,age;

public UserDataModel(String username, String name, String age) {
    this.username = username;
    this.name = name;
    this.age = age;
}

public String getUsername() {
    return username;
}

public void setUsername(String username) {
    this.username = username;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public String getAge() {
    return age;
}

public void setAge(String age) {
    this.age = age;
}
}
现在在doInBackground

ArrayList<UserDataModel> userList = new ArrayList<>();
protected ArrayList<UserDataModel> doInBackground(String... params) {
try{
URL url = new URL (strUrl);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("POST");
con.connect();

//get response from server
BufferedReader bf = new BufferedReader(new InputStreamReader(con.getInputStream()));
String value = bf.readLine();


String json = value;
JSONObject parentObject = new JSONObject(json);
JSONArray parentArray = parentObject.getJSONArray("Data");
JSONObject finalObject = parentArray.getJSONObject(parentArray.length()-1);

UserDataModel model = new UserDataModel();

model.setName= finalObject.getString("NAME");
model.setUsername = finalObject.getString("USERNAME");
model.setAge= finalObject.getString("AGE");

userList.add(model);

return userList;

}catch(Exception e){
   System.out.println(e);
}
ArrayList userList=new ArrayList();
受保护的ArrayList doInBackground(字符串…参数){
试一试{
URL=新URL(strUrl);
HttpURLConnection con=(HttpURLConnection)url.openConnection();
con.setRequestMethod(“POST”);
con.connect();
//从服务器获取响应
BufferedReader bf=新的BufferedReader(新的InputStreamReader(con.getInputStream());
字符串值=bf.readLine();
字符串json=值;
JSONObject parentObject=新的JSONObject(json);
JSONArray parentArray=parentObject.getJSONArray(“数据”);
JSONObject finalObject=parentArray.getJSONObject(parentArray.length()-1);
UserDataModel model=新的UserDataModel();
model.setName=finalObject.getString(“名称”);
model.setUsername=finalObject.getString(“用户名”);
model.setAge=finalObject.getString(“年龄”);
添加(模型);
返回用户列表;
}捕获(例外e){
系统输出打印ln(e);
}
创建一个模型类

public class UserDataModel {
    String username,name,age;

public UserDataModel(String username, String name, String age) {
    this.username = username;
    this.name = name;
    this.age = age;
}

public String getUsername() {
    return username;
}

public void setUsername(String username) {
    this.username = username;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public String getAge() {
    return age;
}

public void setAge(String age) {
    this.age = age;
}
}
现在在doInBackground

ArrayList<UserDataModel> userList = new ArrayList<>();
protected ArrayList<UserDataModel> doInBackground(String... params) {
try{
URL url = new URL (strUrl);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("POST");
con.connect();

//get response from server
BufferedReader bf = new BufferedReader(new InputStreamReader(con.getInputStream()));
String value = bf.readLine();


String json = value;
JSONObject parentObject = new JSONObject(json);
JSONArray parentArray = parentObject.getJSONArray("Data");
JSONObject finalObject = parentArray.getJSONObject(parentArray.length()-1);

UserDataModel model = new UserDataModel();

model.setName= finalObject.getString("NAME");
model.setUsername = finalObject.getString("USERNAME");
model.setAge= finalObject.getString("AGE");

userList.add(model);

return userList;

}catch(Exception e){
   System.out.println(e);
}
ArrayList userList=new ArrayList();
受保护的ArrayList doInBackground(字符串…参数){
试一试{
URL=新URL(strUrl);
HttpURLConnection con=(HttpURLConnection)url.openConnection();
con.setRequestMethod(“POST”);
con.connect();
//从服务器获取响应
BufferedReader bf=新的BufferedReader(新的InputStreamReader(con.getInputStream());
字符串值=bf.readLine();
字符串json=值;
JSONObject parentObject=新的JSONObject(json);
JSONArray parentArray=parentObject.getJSONArray(“数据”);
JSONObject finalObject=parentArray.getJSONObject(parentArray.length()-1);
UserDataModel model=新的UserDataModel();
model.setName=finalObject.getString(“名称”);
model.setUsername=finalObject.getString(“用户名”);
model.setAge=finalObject.getString(“年龄”);
添加(模型);
返回用户列表;
}捕获(例外e){
系统输出打印ln(e);
}

用#或其他符号附加三个字符串并传递它另一个选项是创建一个自定义对象来保存这些值并返回object@Denny有什么例子吗?@DivyeshPatel你能在这里给我写一个简单的例子吗?我完全不知道你为什么不把json字符串传递给post-execute方法,然后解析jsonappend三个字符串使用#或其他符号并传递,另一个选项是创建一个自定义对象来保存这些值并返回object@Denny有什么例子吗?@DivyeshPatel你能在这里给我写一个简单的例子吗?我完全不知道为什么不把json字符串传递到post execute方法中,然后解析json为什么要公开它们或创建一个模型类?当您可以简单地创建字符串的ArrayList数组并将其传递给post时execute@AwaisMajeed“简单数组数组字符串列表”,为什么需要一个arraylist of string数组?一个string数组就足够了。为什么要将它们公开或创建一个模型类?当您可以简单地创建一个arraylist of string数组并将其传递给post时execute@AwaisMajeed“简单数组数组字符串列表”,为什么需要一个arraylist of string数组?一个string数组就足够了。为什么要将它们公开或创建一个模型类?当您可以简单地创建一个arraylist of string数组并将其传递给post时execute@AwaisMajeed是的,他也能做到这一点。这是一个可能的解决方案。同样,模型类也适合多次重复使用数据类型为什么要将其公开或创建mo