Android: JSON Parser con tareas asíncronas (métodos GET y POST)

Sólo quiero comprobar si este JSON Parser con tarea asíncrona se hace correctamente? Cuando puse este código en mi Eclipse, este (method.equals ("POST") fue subrayado en rojo.E indican que el "método" no puede ser resuelto.Alguna sugerencia o ayuda en esto? Gracias.

public class JSONParser { static InputStream is = null; static JSONObject jObj = null; static String json = ""; String url=null; List<NameValuePair> nvp=null; // constructor public JSONParser() { } // function get json from url // by making HTTP POST or GET method public JSONObject makeHttpRequest(String url, String method, List<NameValuePair> params) { BackGroundTask Task= new BackGroundTask(url, method, params); try { return Task.execute().get(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); return null; } catch (ExecutionException e) { // TODO Auto-generated catch block e.printStackTrace(); return null; } } public class BackGroundTask extends AsyncTask<String, String, JSONObject>{ List<NameValuePair> postparams= new ArrayList<NameValuePair>(); String URL=null; public BackGroundTask(String url, String method, List<NameValuePair> params) { URL=url; postparams=params; } @Override protected JSONObject doInBackground(String... params) { // TODO Auto-generated method stub // Making HTTP request try { // Making HTTP request // check for request method if(method.equals("POST")){ // request method is POST // defaultHttpClient DefaultHttpClient httpClient = new DefaultHttpClient(); HttpPost httpPost = new HttpPost(url); httpPost.setEntity(new UrlEncodedFormEntity(postparams)); HttpResponse httpResponse = httpClient.execute(httpPost); HttpEntity httpEntity = httpResponse.getEntity(); is = httpEntity.getContent(); }else if(method == "GET"){ // request method is GET DefaultHttpClient httpClient = new DefaultHttpClient(); String paramString = URLEncodedUtils.format(postparams, "utf-8"); url += "?" + paramString; HttpGet httpGet = new HttpGet(url); HttpResponse httpResponse = httpClient.execute(httpGet); HttpEntity httpEntity = httpResponse.getEntity(); is = httpEntity.getContent(); } } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } try { BufferedReader reader = new BufferedReader(new InputStreamReader( is, "iso-8859-1"), 8); StringBuilder sb = new StringBuilder(); String line = null; while ((line = reader.readLine()) != null) { sb.append(line + "\n"); } is.close(); json = sb.toString(); } catch (Exception e) { Log.e("Buffer Error", "Error converting result " + e.toString()); } // try parse the string to a JSON object try { jObj = new JSONObject(json); } catch (JSONException e) { Log.e("JSON Parser", "Error parsing data " + e.toString()); } // return JSON String return jObj; } } } 

Se ha olvidado de declarar propiedad de method en su clase BackGroundTask.

EDITAR Como esto:

 public class BackGroundTask extends AsyncTask<String, String, JSONObject>{ List<NameValuePair> postparams= new ArrayList<NameValuePair>(); String URL=null; String method = null; public BackGroundTask(String url, String method, List<NameValuePair> params) { URL=url; postparams=params; this.method = method; } @Override protected JSONObject doInBackground(String... params) { // TODO Auto-generated method stub // Making HTTP request try { // Making HTTP request // check for request method if(method.equals("POST")){ // request method is POST // defaultHttpClient DefaultHttpClient httpClient = new DefaultHttpClient(); HttpPost httpPost = new HttpPost(url); httpPost.setEntity(new UrlEncodedFormEntity(postparams)); HttpResponse httpResponse = httpClient.execute(httpPost); HttpEntity httpEntity = httpResponse.getEntity(); is = httpEntity.getContent(); }else if(method == "GET"){ // request method is GET DefaultHttpClient httpClient = new DefaultHttpClient(); String paramString = URLEncodedUtils.format(postparams, "utf-8"); url += "?" + paramString; HttpGet httpGet = new HttpGet(url); HttpResponse httpResponse = httpClient.execute(httpGet); HttpEntity httpEntity = httpResponse.getEntity(); is = httpEntity.getContent(); } } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } try { BufferedReader reader = new BufferedReader(new InputStreamReader( is, "iso-8859-1"), 8); StringBuilder sb = new StringBuilder(); String line = null; while ((line = reader.readLine()) != null) { sb.append(line + "\n"); } is.close(); json = sb.toString(); } catch (Exception e) { Log.e("Buffer Error", "Error converting result " + e.toString()); } // try parse the string to a JSON object try { jObj = new JSONObject(json); } catch (JSONException e) { Log.e("JSON Parser", "Error parsing data " + e.toString()); } // return JSON String return jObj; } } } 

Es necesario establecer el método como una variable de clase dentro de BackGroundTask. Lo está pasando al constructor pero no va nada con él. Establecer de la misma manera que ha hecho con url y postparams.

  • cómo corregir "Declaración de devolución faltante" en java
  • ¿Cómo usar Android build.xml en eclipse?
  • Java.lang.IllegalArgumentException: La ruta no debe estar vacía en Picasso
  • Cómo actualizar el adaptador de lista de Android, por lo que muestra los elementos nuevos
  • Convertir código OpenCV de C ++ a Java
  • error de compilador: "El cursor no se puede resolver a un tipo"
  • Compilando la cadena como código durante el tiempo de ejecución en Android
  • Android RecyclerView LayoutManager Excepción
  • Llamada AsyncTask desde receptor de difusión Android
  • Validar cadena con regex en android
  • ActionBarSherlock - Compartir Contenido icon issue
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.