我試圖從我的本地服務器檢索圖像文件。從服務器文件系統獲取圖像到android應用程序?
這裏是我的(很簡單)PHP請求:
get_image.php
<?php
header("Content-type: image/*");
$images_folder = "uploads/";
$image_name = $_GET['image_id'];
$image_url = $images_folder . $image_name;
if (!readfile($image_url))
echo "Error loading file";
?>
如果我在瀏覽器中運行這個命令:
draw_image.php
<img src="get_image.php?image_id=<?php echo $_POST["image_id"]?>" alt="Image"/>
我畫了我的照片。
現在,如何檢索android應用程序中的這個圖像? 這裏是我的時刻代碼:
public void GetUserPicture() throws Exception, NumberFormatException
{
try
{
String str_image_id = Utils.FromStringToMd5(askme_user.GetLogin() + Utils.SALT);
HttpPost post = new HttpPost("http://192.168.0.7/askme/draw_image.php");
List<NameValuePair> php_question = new ArrayList<NameValuePair>();
php_question.add(new BasicNameValuePair("image_id", str_image_id));
post.setEntity(new UrlEncodedFormEntity(php_question, "UTF-8"));
HttpClient client = new DefaultHttpClient();
HttpResponse response = client.execute(post);
HttpEntity res_entity = response.getEntity();
Log.i(TAG, "Status line : " + response.getStatusLine());
if (res_entity != null) Log.i(TAG, EntityUtils.toString(res_entity));
if (res_entity != null) res_entity.consumeContent();
}
catch (Exception e)
{
Log.e("[GET REQUEST]", "Network exception");
}
}
,這裏是當前的日誌我是來自的HttpResponse receving:
Status line : HTTP/1.1 200 OK
<img src="get_image.php?image_id=971c4623a86a4cbac2f1deffaf3c40" alt="Image"/>
我有種陷在這裏,我不知道是什麼到下一個...
編輯:多虧了蠶兒,這是我最後的代碼,
String url = "http://192.168.0.7/askme/get_image.php";
if (!url.endsWith("?"))
url += "?";
String str_image_id = Utils.FromStringToMd5(askme_user.GetLogin() + Utils.SALT);
List<NameValuePair> params = new LinkedList<NameValuePair>();
params.add(new BasicNameValuePair("image_id", str_image_id));
String str_params = URLEncodedUtils.format(params, "UTF-8");
url += str_params;
HttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet();
request.setURI(new URI(url));
HttpResponse response = client.execute(request);
InputStream is_image = response.getEntity().getContent();
Drawable drawable = Drawable.createFromStream(is_image, "user_picture");
return drawable;