Well what I do to store binary data such as images, is quite simplictic. In my case I deal with uploaded files which get posted to a servlet. Inside the servlet, I get the InputStream on the posted body with request.getInputStream(). However, this works with any kind of InputStreawm, inlcuding one based on an URL. The sample code below shows how to convert that InputStream into google appeninge Blob, which then you can for instance make persistant in the data store.
...
import org.apache.commons.io.IOUtils;
import com.google.appengine.api.datastore.Blob;
...
public void InputStreamToBlob(InputStream i) throws IOException {
...
Blob content = new Blob(IOUtils.toByteArray(i));
...