一般只获得几张图片 可以直接访问图片URL 但有两种情况是不行的 完成不了需求:
一:服务器端用的服务器不支持文件资源共享 如:jboss
二:当客户端请求多张 如:用户列表头像
这时以本人的开发经验得出:图片放在服务器端的一个磁盘文件夹中 客户端将图片名字传到服务器端 服务器端将图片用json装起来传到客户端
代码如下:(中间有数据库)
客户端主要代码:
protected Integer doInBackground(Object... params) {
if (NetHelper.isNetAvailable(POIDetailActivity.this)) {
imagePath = (String)params[0];
iv = (ImageView)params[1];
HashMap<String, String> item = new HashMap<String, String>();
String url = String.format(Constants.COMMON_URL, 107);
item.put("image", imagePath);
item.put("type", "0");
try {
InputStream is = NetHelper.doPostImageRequest(url, item, null);
if (is != null) {
try {
byte[] data = Tools.inputStreamToBytes(is);
if(data != null){
bm = BitmapFactory.decodeByteArray(data, 0, data.length);
}
} catch (Exception e) {
LogHelper.errorLog(TAG, e.toString());
return Constants.CODE_NETWORK_CONNECT_ERROR;
}
}
} catch (ClientProtocolException e) {
LogHelper.errorLog(TAG, e.toString());
return Constants.CODE_CLIENT_PROTOCOL_ERROR;
} catch (IOException e) {
LogHelper.errorLog(TAG, e.toString());
return Constants.CODE_NETWORK_CONNECT_ERROR;
} catch (JSONException e) {
LogHelper.errorLog(TAG, e.toString());
return Constants.CODE_JSON_ERROR;
}
} else {
return Constants.CODE_NO_AVAILABLE_NETWORK;
}
return Constants.CODE_SUCCESS;
}
服务器端主要代码:
/*请求图片资源*/
public static InputStream doPostImageRequest (String url, Map<String, String> params, Map<String, String> headData)
throws ClientProtocolException, IOException, JSONException{
HttpPost httpPost = new HttpPost(url);
LogHelper.debugLog(TAG, ">>>>>>>>>>doPostRequest.url:"+url);
InputStream is = null;
// 设置HTTP POST 请求的头信息
if(headData != null)
for(Map.Entry<String, String> entry : headData.entrySet())
httpPost.setHeader(entry.getKey(), entry.getValue());
// 封装POST请求传送的数据
ArrayList<BasicNameValuePair> pairs = new ArrayList<BasicNameValuePair>();
if(params != null)
for(Map.Entry<String, String> entry : params.entrySet())
pairs.add(new BasicNameValuePair(entry.getKey(), entry.getValue()));
// 对POST请求的数据进行UTF-8转码
UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(pairs, ENCODING);
httpPost.setEntity(formEntity);
HttpResponse response = getHttpClient().execute(httpPost);
if(response.getStatusLine().getStatusCode() == HttpStatus.SC_OK){
HttpEntity resEntity = response.getEntity();
is = resEntity.getContent();
}else{
httpPost.abort();
}
android 从服务器端下载图片列表 服务器端封装json
最新推荐文章于 2023-06-24 12:34:15 发布