愿无悔这一生 2017-04-13 06:58 采纳率: 0%
浏览 1065
已结题

OkHttp框架使用问题,菜鸟急求啊

这是我的OkHttp框架 但不知道怎么在MainActivity里面用 我随便用了 但好像提交不了数据 求大神指定啊,本人是名菜鸟
public class OkHttpUtil {
private static final String TAG = "OkHttpUtil";
private static OkHttpUtil mInstance;
private OkHttpClient mOkHttpClient;
private Handler mDelivery;
private OkHttpUtil() {
mOkHttpClient = new OkHttpClient();
mDelivery = new Handler(Looper.getMainLooper());
}
private synchronized static OkHttpUtil getmInstance() {
if (mInstance == null) {
mInstance = new OkHttpUtil();
}
return mInstance;
}
private void getRequest(String url, final ResultCallback callback) {
final Request request = new Request.Builder().url(url).build();
deliveryResult(callback, request);
}
private void postRequest(String url, final ResultCallback callback, List params) {
Request request = buildPostRequest(url, params);
deliveryResult(callback, request);
}
private void deliveryResult(final ResultCallback callback, Request request) {
mOkHttpClient.newCall(request).enqueue(new Callback() {

        @Override
        public void onFailure(Call call, IOException e) {
            sendFailCallback(callback, e);
        }

        @Override
        public void onResponse(Call call, Response response) throws IOException {
            try {
                String str = response.body().string();
                sendSuccessCallBack(callback, str);
            } catch (final Exception e) {
                Log.e(TAG, e.toString());
                sendFailCallback(callback, e);
            }
        }
    });
}
private void sendFailCallback(final ResultCallback callback, final Exception e) {
    mDelivery.post(new Runnable() {
        @Override
        public void run() {
            if (callback != null) {
                callback.onFailure(e);
            }
        }
    });
}
private void sendSuccessCallBack(final ResultCallback callback, final Object obj) {
    mDelivery.post(new Runnable() {
        @Override
        public void run() {
            if (callback != null) {
                callback.onSuccess(obj);
            }
        }
    });
}
private Request buildPostRequest(String url, List<Param> params) {
    FormBody.Builder builder = new FormBody.Builder();
    for (Param param : params) {
        builder.add(param.key, param.value);
    }
    RequestBody requestBody = builder.build();
    return new Request.Builder().url(url).post(requestBody).build();        
}
 private void postImageRequest(String url, ResultCallback callback, List<Param> params) {
    Request request = buildPostImageRequest(url, params);
    deliveryResult(callback, request);
}
private Request buildPostImageRequest(String url, List<Param> params) {
    if(params == null || params.size()==0){
        throw new RuntimeException("上传图片路径为null");
    }
    MultipartBody.Builder builder = new MultipartBody.Builder().setType(MultipartBody.FORM);
    for (Param param : params) {
        File file = new File(param.value);
        if(file.exists()){
            builder.addFormDataPart(param.key, file.getName(),
                    RequestBody.create(MediaType.parse("image/*"), file));
        }
    }
    RequestBody requestBody = builder.build();
    return new Request.Builder().url(url).post(requestBody).build();
}

/**********************对外接口************************/
/**
 * get请求
 * @param url  请求url
 * @param callback  请求回调
 */
public static void get(String url, ResultCallback callback) {
    getmInstance().getRequest(url, callback);
}
/**
 * post请求
 * @param url       请求url
 * @param callback  请求回调
 * @param params    请求参数
 */
public static String post(String url, final ResultCallback callback, List<Param> params) {
    getmInstance().postRequest(url,callback,params);
    return url;
}
/**
 * post请求, 图片上传
 * @param url       请求url
 * @param callback  请求回调
 * @param params    请求参数
 */
public static void uploadImage(String url, final ResultCallback callback, List<Param> params) {
    getmInstance().postImageRequest(url, callback, params);
}

/**
 * http请求回调类,回调方法在UI线程中执行
 * @param <T>
 */
public static abstract class ResultCallback<T> {

    /**
     * 请求成功回调
     * @param response
     */
    public abstract void onSuccess(T response);
    /**
     * 请求失败回调
     * @param e
     */
    public abstract void onFailure(Exception e);
}
/**
 * post请求参数类
 */
public static class Param {
    String key;
    String value;
    public Param(String key, String value) {
        this.key = key;
        this.value = value;
    }
}

}
这是我的MainActivity
public class MainActivity extends AppCompatActivity {

private Button btn;
private static String PATH = "http://192.168.31.177:8081"; // 服务端地址
private static URL url;

// private HttpUtils httpUtils;
private OkHttpUtil okHttpUtil;
private OkHttpUtil.ResultCallback resultCallback;

public MainActivity(OkHttpUtil.ResultCallback resultCallback) {
    this.resultCallback = resultCallback;
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    initView();
}

public void initView(){
    btn = (Button) findViewById(R.id.post_btn);
    btn.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View view) {
            strSendPost();
        }
    });
}
public void strSendPost(){

// Map map = new HashMap();
List list = new ArrayList<>();
// params.put("shopId","371");
// params.put("advertA map.put("mode","iisue");
// map.put("call","shopService.qryAdvertList");
// map.put("params","{\"advertAreaId\":\"1\",\"shopId\":\"371\"}\n");
// map.put("version","1.0.0");reaId","1")
//
String result =okHttpUtil.post(PATH, resultCallback,list);
System.out.println("--->>" + result);
}
}

  • 写回答

3条回答

  • 昵称_Justin 2017-04-13 07:08
    关注

    。。。。debug调试吧,这么多代码懒得看

    评论

报告相同问题?

悬赏问题

  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大
  • ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序
  • ¥15 onvif+openssl,vs2022编译openssl64