2015-07-26 3 views
-2

я использую httpclient в asynctask doInBackground для получения моего php-session значенияHttpClient не работает в AsyncTask

это мои Java кодов:

package com.example.example; 

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 

import org.apache.http.HttpResponse; 
import org.apache.http.client.methods.HttpGet; 
import org.apache.http.impl.client.DefaultHttpClient; 
import org.json.JSONException; 
import org.json.JSONObject; 

import android.app.Activity; 
import android.app.ProgressDialog; 
import android.os.AsyncTask; 
import android.os.Bundle; 

public class MainActivity extends Activity { 

    private String aktuell_date_u,set_check; 
    public static DefaultHttpClient client = new DefaultHttpClient(); 
    private ProgressDialog pd; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 
     setContentView(R.layout.login_main); 

     pd = new ProgressDialog(MainActivity.this); 
     pd.setMessage("bitte warten..."); 
     pd.show(); 

     new get_sessions(); 

    } 
    private class get_sessions extends AsyncTask<String, Void, JSONObject> { 

     @Override 
     protected JSONObject doInBackground(String... arg0) { 

      HttpGet post = new HttpGet("http://www.example.com/getsessions.php"); 
      try { 
       HttpResponse response = client.execute(post); 
       BufferedReader rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent())); 
       StringBuilder sb = new StringBuilder(); 
       String line = ""; 
       while ((line = rd.readLine()) != null) { 
        sb.append(line); 
        break; 
       } 
       return new JSONObject(sb.toString()); 
      } catch (JSONException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
      return null; 
     } 
     protected void onPostExecute(JSONObject result){ 
      aktuell_date_u = result.optString("aktuell_date_u").toString(); 
      set_check = result.optString("set_check").toString(); 
      pd.cancel(); 
     } 
    } 
} 

и это мои php кодов:

<?php 

session_start(); 

header('content-type: aplication/json; charset=utf-8'); 

setcookie("cookie_test", date('U')); 

$aktuell_date_u=date('U'); 
$_SESSION['set_check']=md5($aktuell_date_u); 

echo '{"aktuell_date_u":"'.$aktuell_date_u.'","set_check":"'.$_SESSION['set_check'].'"}'; 

?> 

PregressDialog грузы и грузы ...

то, что я делаю неправильно, потому что моя работа httpclient codes из doInBackground

Особой благодарности

ответ

2

Вы не вызывая execute() СПОСОБА AsyncTask «s, поэтому AsyncTask никогда не работает. Вместо

new get_sessions(); 

Вам нужно позвонить:

new get_sessions().execute(null); 

Как вы не используете аргументы, передаваемые doInBackground(), я не знаю, почему вы определили их как String.

Возможно, вы также должны изучить базовое обучение по соглашениям кодирования Java и следовать им - такие вещи, как создание имен классов, начинаются с буквы верхнего регистра и верблюда, а не с помощью подчеркивания. Следующие соглашения облегчают чтение вашего кода другим людям.

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