1

JavaサーバーからArrayList(この場合)を受信するためにAsyncTaskを使用したいと思います。確かに、サーバーから何かを受け取ったので、トーストで表示しようとしています。

コードは次のとおりです。

 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 になります。したがって、応答が返された後、それを取得し、ロジックに従って解析します。

HTTP get/post (サーバーへの ping とデータの取得) と解析 (JSON/XML) を探します。

于 2013-06-14T03:38:25.320 に答える