从javaweb获取一张图片的数据流,方法如下:
5 ^% P3 m2 d) ^; T- ]
8 g) x! g- @) Q" ?% x* K- e% R response.setContentType("text/html");9 ~* @2 w, k& e. K) J3 b, Y
+ \ L/ K' k9 N4 _
response.setCharacterEncoding("UTF-8");
u7 M; t/ v2 \* s r6 g
% j$ C% [6 f1 U0 B PrintWriter writer = response.getWriter();
' V8 N" j- ^" M 3 _& o- i6 n& X: r
InputStream inputStream = this.getServletContext().getResourceAsStream("/WEB-INF/pics/4.jpg");7 m2 l! \" ], B9 A
0 L8 ]; w! N- a BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));1 B) u% v J" s, _% X
1 _ N: y2 x, `' `% U String str;* s/ o% u) _, M2 v1 @) r8 D
L0 }5 \' c( w while((str=bufferedReader.readLine())!=null){
+ Z5 N& d5 L$ ?7 E; L% G. } . L3 L N' ]& `; h- o* {4 Y
writer.write(str);
3 O# c( X# f/ s4 f8 V5 o0 { g2 l6 U: Y3 S; D+ T
System.out.println("str="+str);
( M0 q A4 r& r . N& `9 q1 f: v. {" p3 c+ T
}0 h9 b! c3 n, T
0 U! O! C7 q/ S' \# C, Y) V4 \% \
writer.flush();( u8 {/ F& `* J* p3 s' P( ^
6 o. Y1 B6 x0 K& `
writer.close();
- J2 n8 n! [" Z0 }1 j! S3 h 8 l0 P4 k( E4 G! J. W$ W6 y8 ~
然后android客户端获取此数据流,
9 m' O+ a. D* f: W! f * K; A& {+ n) }. b
public static ByteArrayOutputStream readParse(String urlPath) throws Exception {
0 M9 O$ K( F; i/ V
) N! r( w3 n5 w+ N$ a7 T ByteArrayOutputStream outStream = new ByteArrayOutputStream();
Z' h" ]0 G4 m- }8 \- W 1 J6 o! S( W$ }9 j f- z0 W: H8 p' k
byte[] data = new byte[1024];
/ B9 v: _9 I& N1 \ 4 K* m. z- f/ O" i
int len = 0;
, j/ Q$ p2 U! Y- p$ e: _4 g3 j
/ Z8 @) X* S8 R5 d# e0 s URL url = new URL(urlPath);
, _2 v$ @( ^( ~ U1 G+ j9 v8 N . _2 P" c8 H) O4 }( G2 |
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
, N) y2 L# V& g: S" c- ] ( W9 R7 k3 G9 y, L3 p
Log.i("xin", "conn="+conn);% o/ u& q- `+ q1 A/ c5 c s- D
. {+ P1 _. C$ c# I InputStream inStream = conn.getInputStream();
- [/ G: j8 J- u; T ! p9 ^4 N! j" C$ \9 L' k$ s
' S6 B0 ]5 }! c/ Q5 J
Q' q, l7 [: b' d* } while ((len = inStream.read(data)) != -1) {
5 R8 N9 H' U" \! g6 {) p- p! c w
7 V5 s: D- Q$ w" c outStream.write(data, 0, len);
2 Y0 K0 D. O/ T3 q * @( t" \6 X6 h E
, T5 ~; Q: F& h0 z
" o' q# j8 M! [# P+ C }# M3 y# m* [5 Z8 i- Y: b( u5 t
: }8 A* v) h+ c! O
inStream.close();
% M" w# T/ H2 w- Q0 H$ C ' ~7 d9 m: H8 r& c7 Y( i( m
return outStream;
3 G/ J1 ?' O& B' ?6 T5 F6 L ' [7 }0 _+ g" R2 I# r+ ~8 \
0 R5 `$ v) j8 g6 s% X2 r
- g, }- h6 {- [. Y9 L& X }4 W% F/ m7 h: X+ p! i; a
% [. `) g4 h' S. H然后调用上面的方法:4 c+ O H) L$ M3 C9 a
1 X) s5 Z! P8 r n! v, M+ W
ByteArrayOutputStream readParse = readParse(urlPath);
: Y) d, `, ?3 [ 6 W* h- t1 N. h4 d- x* F/ I6 U
byte[] byteArray = readParse.toByteArray();1 o+ Q' J: V1 s( ]$ l
4 T( u& l5 k K7 C* I4 A Bitmap bitmap = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);
+ ]7 v' D3 t+ T! O2 d" a* o ' ~4 U2 `. b6 z/ Q
却获得bitmap 为null,经验证从服务器端获取到了数据,byteArray 不为空。
1 v8 ]. u3 Q: p " R/ R( y: [& t7 [
求大神指点一下