5

Hola chicos, bien, estoy tratando de cargar imágenes del servidor, de acuerdo con el número de identificación, ¿cuál sería el mejor método para recuperarlo del servicio web podría alguien guiarme? ?cómo obtener imágenes del servicio web a la aplicación Android

package com.crispsys; 

import java.io.IOException; 
import java.net.MalformedURLException; 
import java.net.URL; 

import android.app.Activity; 
import android.app.ProgressDialog; 
import android.graphics.Bitmap; 
import android.graphics.BitmapFactory; 
import android.os.Bundle; 
import android.os.Handler; 
import android.view.View; 
import android.widget.Button; 
import android.widget.ImageView; 
import android.widget.TextView; 
import android.widget.Toast; 

public class imageviewer extends Activity { 
    /** Called when the activity is first created. */ 

    Bitmap image; 
    private TextView ordernumber; 
    ImageView imageView; 
    private Button butt; 
    String Str="image",ordno; 


    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.imageviewerr); 

     this.butt = (Button) this.findViewById(R.id.getbutt); 
      this.imageView =(ImageView) findViewById(R.id.blodig); 
      this.ordernumber=(TextView)this.findViewById(R.id.ordernotext); 

      final Bundle getdata = getIntent().getExtras(); 

      if (getdata != null)  
      { 
       ordno=getdata.getString("orono"); 
       ordernumber.setText(ordno); 
      } 


     this.butt.setOnClickListener(new View.OnClickListener() { 

      public void onClick(View v) { 
       // TODO Auto-generated method stub 


       Toast.makeText(getApplicationContext(),"loading" , Toast.LENGTH_LONG).show(); 

         URL url = null; 


         try 
         { 

          url = new URL("http://www.cyberstudents.in/aaa/car.jpg"); 

         } 
         catch (MalformedURLException e) 
         { 
          e.printStackTrace(); 
         } 
         try { 
          image = BitmapFactory.decodeStream(url.openStream()); 

         } 
         catch (IOException e) 
         { 
          e.printStackTrace(); 
         } 

       imageView.setImageBitmap(image); 
      } 
     }); 

    } 
} 

del archivo XML:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:background="@drawable/cr_isp" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 

    <TableRow 
     android:id="@+id/tableRow1" 
     android:layout_width="match_parent" 
     android:gravity="center" 
     android:paddingTop="20dp" 
     android:layout_height="wrap_content" > 

     <TextView 
      android:id="@+id/ordernotext" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textColor="#8B8682" 
      android:text="" /> 


    </TableRow> 

    <TableRow 
     android:id="@+id/tableRow1" 
     android:layout_width="match_parent" 
     android:gravity="center" 
     android:paddingTop="20dp" 
     android:layout_height="wrap_content" > 

     <Button 
      android:id="@+id/getbutt" 
      android:layout_width="210dp" 
      android:layout_height="40dp" 
      android:background="@drawable/bcbut" 
      android:textColor="#8B8682" 
      android:text="Get Block Dig" /> 

    </TableRow> 

    <TableRow 
     android:id="@+id/tableRow2" 
     android:layout_width="match_parent" 
     android:gravity="center" 
     android:paddingTop="20dp" 
     android:layout_height="wrap_content" > 

     <ImageView 
      android:id="@+id/blodig" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:src="@drawable/ic_launcher" /> 

    </TableRow> 

</LinearLayout> 
  • intentado con esta codificación, pero yo sólo podía trabajar con imágenes de tamaño pequeño cuando voy para imágenes de tamaño grande que duerma funciona, sigue siendo igual, no puedo encuentra cualquier error al mostrar la misma pantalla
+0

Describa su pregunta. ¿Estás analizando XML? –

+0

intente buscar 'Universal Image Loader en android' –

+0

Krishna Suthar actualli probé con ambos tipos de URL y también en cadena de conversión base64 cuando reviso con el código anterior pude cargar imágenes de tamaño pequeño, – user1389233

Respuesta

1

haz una solicitud de obtención con ese número de identificación al servicio web y el servicio responde con la imagen requerida.

2

Depende de la respuesta del servidor, es decir, en qué forma proporciona la imagen. Puede ser en forma de cadena base 64 o una URL.

Si se trata de una cadena base 64, debe codificarla utilizando la clase base64 en java y, si es su url, simplemente necesita establecer la imagen utilizando mapa de bits mediante el enlace de la imagen al mapa de bits desde url. Debe realizar una solicitud de obtención al servidor utilizando httpGet de la siguiente manera.

public static String connect(String url) throws IOException { 
    HttpClient httpclient = new DefaultHttpClient(); 
    HttpGet httpget = new HttpGet(url); 
    HttpResponse response; 
    try { 
     response = httpclient.execute(httpget); 
     HttpEntity entity = response.getEntity(); 
     if (entity != null) { 
      InputStream instream = entity.getContent(); 
      result = convertStreamToString(instream); 
      instream.close(); 
     } 
    } catch (ClientProtocolException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    return result; 
} 


private static String convertStreamToString(InputStream input) { 
    /* 
    * To convert the InputStream to String we use the 
    * BufferedReader.readLine() method. We iterate until the BufferedReader 
    * return null which means there's no more data to read. Each line will 
    * appended to a StringBuilder and returned as String. 
    */ 
    BufferedReader reader = new BufferedReader(new InputStreamReader(input)); 
    StringBuilder buffer = new StringBuilder(); 
    String line = null; 
    try { 
     while ((line = reader.readLine()) != null) { 
      buffer.append(line + "\n"); 
     } 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } finally { 
     try { 
      input.close(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
    return buffer.toString(); 
} 
+0

La q es sobre imágenes sin cadena . – Tina

10

Puede usar el cargador de imágenes asíncronas para cargar imágenes de forma asíncrona. Verifique el código a continuación.

private class FetchImageTask extends AsyncTask<String, Integer, Bitmap> { 
    @Override 
    protected Bitmap doInBackground(String... arg0) { 
     Bitmap b = null; 
     try { 
      b = BitmapFactory.decodeStream((InputStream) new URL(arg0[0]).getContent()); 
     } 
     catch (MalformedURLException e) { 
      e.printStackTrace(); 
     } 
     catch (IOException e) { 
      e.printStackTrace(); 
     } 
     return b; 
    } 
} 

Para implementar utilice este código.

new FetchImageTask() { 
     @Override 
     protected void onPostExecute(Bitmap result) { 
      if (result != null) { 
       image.setImageBitmap(result); 
      } 
     } 
    }.execute("IMAGE_URL"); 
Cuestiones relacionadas