2013-06-14 6 views
1

Я хочу использовать AsyncTask для приема ArrayList (в данном случае) с сервера Java. Конечно, что я получил что-то от сервера, я пытаюсь отобразить его с помощью Toast.AsyncTask. Проблемы с получением с сервера Java

Кодекс следующее:

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 ничего не происходит. P.S. Я могу успешно передавать с Android на сервер. Таким образом, это не проблема подключения или разрешения.

Спасибо за помощь

ответ

0

Выяснено! Я удалил метод приема в doInBackground.

0

Привет Если ваш получать некоторые вещи с сервера вы должны вызвать URL-адрес веб-сервера для извлечения данных. После того, как данные приходят в ответ, есть какой-то тип, он будет JSON/XML, если они являются успокоительными услугами, если они являются SOAP-сервисами, которые они находятся в конверте. Поэтому после ответа ответа получите это и проанализируйте их по логике.

Ищите HTTP-получение/отправку (для отправки на сервер и получения данных) и разбора (JSON/XML).

+0

Это не веб-сервер, на котором выполняется HTTP. Это просто еще одна машина в локальной сети, которая запускает приложение Java. Я хочу использовать сокеты для выполнения всех операций передачи данных. –

Смежные вопросы