I’m new to Android programming and could really use some help with a program I’m writing to establish a Http connection and display an image.
I’m using the ‘Beginning Android Application Development’ book by Wei-Meng Lee. The code compiles and there are no errors flagging up but every time I run the program the ‘error connecting’ message appears and no image is displayed.
I’ve looked at various samples of code for GET requests but can’t find anything that works with my code.
Any help that anyone can offer would be greatly appreciated as I am struggling to see any solution so far.
The last line of code about uses-permission was included in the Manifest.
ImageView image;
private InputStream OpenHttpConnection(String urlString)
throws IOException {
InputStream in = null;
int response = -1;
URL url = new URL(urlString);
URLConnection conn = url.openConnection();
if(!(conn instanceof HttpURLConnection))
throw new IOException("Not an HTTP Connection");
try {
HttpURLConnection httpConn = (HttpURLConnection) conn;
httpConn.setAllowUserInteraction(false);
httpConn.setInstanceFollowRedirects(true);
httpConn.setRequestMethod("GET");
httpConn.connect();
response = httpConn.getResponseCode();
if (response == HttpURLConnection.HTTP_OK) {
in = httpConn.getInputStream();
}
}
catch (Exception ex) {
throw new IOException("Error connecting");
}
return in;
}
private Bitmap DownloadImage(String URL) {
Bitmap bitmap = null;
InputStream in = null;
try {
in = OpenHttpConnection(URL);
bitmap = BitmapFactory.decodeStream(in);
in.close();
}
catch (IOException e1) {
Toast.makeText(this, e1.getLocalizedMessage(), Toast.LENGTH_LONG).show();
e1.printStackTrace();
}
return bitmap;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_network);
Bitmap bitmap = DownloadImage("http://www.mayoff.com/5-01cablecarDCP01934.jpg");
image = (ImageView) findViewById(R.id.image);
image.setImageBitmap(bitmap);
}
<uses-permission
android:name="android.permission.INTERNET" />
Maybe problem is you having because of api version. you must use AsyncTask class for accessing web functions.
This may be related to the fact that in apis 11 and above accessing the net in Main thread is not allowed you may have to use ASYNC task.
example for using ASYNC task;