1

我想使用 AsyncTask 从 Java 服务器接收 ArrayList(在这种情况下)。可以肯定的是,我从服务器收到了一些东西,我正试图用 Toast 显示它。

代码如下:

 public class MainActivity extends Activity {

private DataReceiving dRec;
private DataTransfer dTrans;
private EditText inputData;
private Button sendParametersBtn;
private Button startComputationBtn;
private TextView displayText;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    inputData=(EditText) findViewById(R.id.InputText);
    sendParametersBtn=(Button) findViewById(R.id.button1);
    startComputationBtn=(Button) findViewById(R.id.button2);
    displayText=(TextView) findViewById(R.id.textView1);


    sendParametersBtn.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            dRec = new DataReceiving();
            dRec.execute(); 

        }
    });
private class DataReceiving extends AsyncTask<Void, Void, ArrayList>
{       

    @Override
    protected ArrayList doInBackground(Void... params) {
        ArrayList b = new ArrayList();
        try {
            b = receive();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }           
        return b;

    }

    protected void onPostExecute(ArrayList result) {              
          super.onPostExecute(result);  
          Toast toast=Toast.makeText(getApplicationContext(), result.toString(), Toast.LENGTH_SHORT);
          toast.show();
    }

 public ArrayList receive () throws IOException, ClassNotFoundException
{
    ServerSocket s= new ServerSocket(8888);
    Socket incoming =s.accept();                
    ObjectInputStream ios = new ObjectInputStream(incoming.getInputStream());
    ArrayList b = (ArrayList) ios.readObject();             
    ios.close();
    incoming.close();
    s.close();
    return b;
}

单击 sendParametersBtn 时没有任何反应。PS我可以成功地从Android传输到服务器。所以它不是连接或权限问题。

谢谢你的帮助

4

2 回答 2

0

嗨,如果您从服务器获取一些东西,您必须调用 Web 服务器 url 来获取数据。数据到达后,响应具有某种类型,如果它们是 SOAP 服务,则它们是 JSON/XML,如果它们是 SOAP 服务,则它们在信封中。所以在响应返回后得到它并按照逻辑解析它们。

查找 HTTP get/post(用于 ping 服务器并获取数据)和解析(JSON/XML)。

于 2013-06-14T03:38:25.320 回答
0

想通了!我将接收方法删除到 doInBackground 中。

于 2013-07-03T19:32:37.883 回答