由于 REST API 响应 Header,在 Android 中显示图像
Show Image in Android as a result of REST API Respone Header
我的 REST API 正在 header('Content-Type'、'image/png')中返回图像。图片以二进制形式存储在SQL服务器中(数据类型:图片,以二进制格式存储)。 API 的回复非常完美,因为我已经在 Postman 中查看过了。
我想在 Android 中显示该图像。 (我正在为网络请求使用 volley。)
有什么想法吗?
先感谢您。
EDIT1
这是我的 slim REST API 路由 returns 图片。
//get image
$app->get('/image', function ($request, $response) {
$conn = new PDO('sqlsrv:server =localhost; Database = dbName', 'dbUser', 'dbPass');
$sql = "SELECT Picture
FROM Table
WHERE Primary_Key = 'abc'";
$statement = $conn->prepare($sql);
$statement->execute();
$row = $statement->fetch(PDO::FETCH_ASSOC);
return $response->withHeader('Content-Type', 'image/png')->write($row['Picture']);}
编辑2
这是我的 API 在 Android 结束时使用 volley 获取请求调用。此代码位于片段中。 url 是一个字符串变量,profileImage 是一个 ImageView,我想在其中使用获取的图像。
url= getString(R.string.api_url) + "image";
request = new StringRequest(GET, url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
byte[] byteArray = response.getBytes();
Bitmap bitmap =
BitmapFactory.decodeByteArray(byteArray,0,byteArray.length);
profileImage.setImageBitmap(bitmap);
} //onErrorResponse
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
error.printStackTrace();
}
}) {
};
queue = Volley.newRequestQueue(getActivity());
queue.add(request);
经过一番努力,我得出结论,这个问题可能与
我替换了值
url = "http://i.imgur.com/7spzG.png";
我的 API GET 请求和结果完全符合预期。
这是来自该问题线程的代码。
ImageView mImageView;
String url = "http://i.imgur.com/7spzG.png";
mImageView = (ImageView) findViewById(R.id.myImage);
...
// Retrieves an image specified by the URL, displays it in the UI.
ImageRequest request = new ImageRequest(url,
new Response.Listener<Bitmap>() {
@Override
public void onResponse(Bitmap bitmap) {
mImageView.setImageBitmap(bitmap);
}
}, 0, 0, null,
new Response.ErrorListener() {
public void onErrorResponse(VolleyError error) {
mImageView.setImageResource(R.drawable.image_load_error);
}
});
// Access the RequestQueue through your singleton class.
MySingleton.getInstance(this).addToRequestQueue(request);
谢谢大家的帮助。
我的 REST API 正在 header('Content-Type'、'image/png')中返回图像。图片以二进制形式存储在SQL服务器中(数据类型:图片,以二进制格式存储)。 API 的回复非常完美,因为我已经在 Postman 中查看过了。
我想在 Android 中显示该图像。 (我正在为网络请求使用 volley。)
有什么想法吗?
先感谢您。
EDIT1
这是我的 slim REST API 路由 returns 图片。
//get image
$app->get('/image', function ($request, $response) {
$conn = new PDO('sqlsrv:server =localhost; Database = dbName', 'dbUser', 'dbPass');
$sql = "SELECT Picture
FROM Table
WHERE Primary_Key = 'abc'";
$statement = $conn->prepare($sql);
$statement->execute();
$row = $statement->fetch(PDO::FETCH_ASSOC);
return $response->withHeader('Content-Type', 'image/png')->write($row['Picture']);}
编辑2
这是我的 API 在 Android 结束时使用 volley 获取请求调用。此代码位于片段中。 url 是一个字符串变量,profileImage 是一个 ImageView,我想在其中使用获取的图像。
url= getString(R.string.api_url) + "image";
request = new StringRequest(GET, url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
byte[] byteArray = response.getBytes();
Bitmap bitmap =
BitmapFactory.decodeByteArray(byteArray,0,byteArray.length);
profileImage.setImageBitmap(bitmap);
} //onErrorResponse
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
error.printStackTrace();
}
}) {
};
queue = Volley.newRequestQueue(getActivity());
queue.add(request);
经过一番努力,我得出结论,这个问题可能与
我替换了值 url = "http://i.imgur.com/7spzG.png"; 我的 API GET 请求和结果完全符合预期。
这是来自该问题线程的代码。
ImageView mImageView;
String url = "http://i.imgur.com/7spzG.png";
mImageView = (ImageView) findViewById(R.id.myImage);
...
// Retrieves an image specified by the URL, displays it in the UI.
ImageRequest request = new ImageRequest(url,
new Response.Listener<Bitmap>() {
@Override
public void onResponse(Bitmap bitmap) {
mImageView.setImageBitmap(bitmap);
}
}, 0, 0, null,
new Response.ErrorListener() {
public void onErrorResponse(VolleyError error) {
mImageView.setImageResource(R.drawable.image_load_error);
}
});
// Access the RequestQueue through your singleton class.
MySingleton.getInstance(this).addToRequestQueue(request);
谢谢大家的帮助。