package com.fanxin.app.comments; import internal.org.apache.http.entity.mime.MultipartEntity; import internal.org.apache.http.entity.mime.content.FileBody; import internal.org.apache.http.entity.mime.content.StringBody; import java.io.BufferedReader; import java.io.File; import java.io.IOException; import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; import java.nio.charset.Charset; import java.util.List; import org.apache.http.HttpResponse; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.params.CoreConnectionPNames; import com.alibaba.fastjson.JSONException; import com.alibaba.fastjson.JSONObject; import com.fanxin.app.MYApplication; import android.annotation.SuppressLint; import android.content.Context; import android.net.Uri; import android.os.Handler; import android.os.Message; import android.text.TextUtils; import android.util.Log; public class SendTask { private String url; private List<Uri> images; private String content;// 朋友圈文字 private String location;// 位置 private String userID;// private String imageStr="0"; public SendTask(Context context, String url, List<Uri> images, String content, String location) { this.url = url; this.images = images; this.content = content; this.location = location; userID=MYApplication.getInstance().getUserName(); } @SuppressLint("HandlerLeak") public void getData(final DataCallBack dataCallBack) { final Handler handler = new Handler() { @Override public void handleMessage(Message msg) { if (msg.what == 111 && dataCallBack != null) { JSONObject jsonObject = (JSONObject) msg.obj; dataCallBack.onDataCallBack(jsonObject); } else { dataCallBack.onDataCallBack(null); Log.e("APIerrorCode:", String.valueOf(msg.what)); } } }; new Thread() { @SuppressLint("SdCardPath") public void run() { HttpClient client = new DefaultHttpClient(); MultipartEntity entity = new MultipartEntity(); int num = images.size(); for (int i = 0; i < num; i++) { String imageUrl = images.get(i).getPath(); String filename = imageUrl.substring(imageUrl .lastIndexOf("/") + 1); File file = new File("/sdcard/bizchat/"+filename); File file_big = new File("/sdcard/bizchat/"+"big_"+filename); if(file.exists()&&file_big.exists()){ Log.e("imageStr_ok---->>>>>>.", "ffffff"); }else{ Log.e("imageStr_ok---->>>>>>.", "ggggggg"); } // 小图 entity.addPart("file_" + String.valueOf(i), new FileBody( file)); // 大图 entity.addPart("file_" + String.valueOf(i) + "_big", new FileBody(file_big)); if(i==0){ imageStr=filename; }else{ imageStr=imageStr+"split"+filename; Log.e("imageStr---->>>>>>.", imageStr); } } try { // 图片总数量 entity.addPart("num", new StringBody(String.valueOf(num), Charset.forName("UTF-8"))); Log.e("num---->>>>>>.",String.valueOf(num)); // 文章内容 entity.addPart("content", new StringBody(content, Charset.forName("UTF-8"))); Log.e("content---->>>>>>.",content); // 位置 if(!TextUtils.isEmpty(location)){ entity.addPart("location", new StringBody(location, Charset.forName("UTF-8"))); }else{ entity.addPart("location", new StringBody("0", Charset.forName("UTF-8"))); } //Log.e("location---->>>>>>.",location); //发布者id entity.addPart("userID", new StringBody(userID, Charset.forName("UTF-8"))); //拼接的图片 entity.addPart("imageStr", new StringBody(imageStr, Charset.forName("UTF-8"))); Log.e("imageStr---->>>>>>.",imageStr); } catch (UnsupportedEncodingException e1) { e1.printStackTrace(); } client.getParams().setParameter( CoreConnectionPNames.CONNECTION_TIMEOUT, 30000); client.getParams().setParameter( CoreConnectionPNames.SO_TIMEOUT, 30000); HttpPost post = new HttpPost(url); post.setEntity(entity); StringBuilder builder = new StringBuilder(); try { HttpResponse response = client.execute(post); if (response.getStatusLine().getStatusCode() == 200) { BufferedReader reader = new BufferedReader( new InputStreamReader(response.getEntity() .getContent(), Charset.forName("UTF-8"))); for (String s = reader.readLine(); s != null; s = reader .readLine()) { builder.append(s); } String builder_BOM = jsonTokener(builder.toString()); System.out.println("返回数据是------->>>>>>>>" + builder.toString()); try { JSONObject jsonObject = new JSONObject(); jsonObject = JSONObject.parseObject(builder_BOM); Message msg = handler.obtainMessage(); msg.what = 111; msg.obj = jsonObject; handler.sendMessage(msg); } catch (JSONException e) { Message msg = handler.obtainMessage(); msg.what = 222; msg.obj = null; handler.sendMessage(msg); } } else { Log.e("response.getStatusLine().getStatusCode() ----》》", String.valueOf(response.getStatusLine() .getStatusCode())); Message msg = handler.obtainMessage(); msg.what = 333; msg.obj = null; handler.sendMessage(msg); } } catch (ClientProtocolException e) { Message msg = handler.obtainMessage(); msg.what = 444; msg.obj = null; handler.sendMessage(msg); } catch (IOException e) { Message msg = handler.obtainMessage(); msg.what = 555; msg.obj = null; handler.sendMessage(msg); } } }.start(); } private String jsonTokener(String in) { if (in != null && in.startsWith("\ufeff")) { in = in.substring(1); } return in; } /** * 网路访问调接口 * */ public interface DataCallBack { void onDataCallBack(JSONObject data); } }