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

这是我的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);
}
}

0

3个回答

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

0

你确定服务端支持一次性上传多个图片文件??
你先上传一个文件试试看

0

我有demo,你想要吗?

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
javabean求解旧错
javabean+jsp问题,求纠错。急/
java代码啊
很值得学习的java代码!求积分啊,急急急
Okhttp网络框架的基本使用及源码解析
Okhttp网络框架的学习及源码分析nHTTP及相关协议nHTTP协议n出现及发展nn1960年美国人Ted Nelson提出想法n由万维网协会(www)和互联网工程工作共同研究n目前使用最广泛的是HTTP1.1nnHTTP协议结构nHTTP协议的结构有四个主要组成部分:nn请求头nn表明本次请求的客户端n本次请求所使用的cookie(标明本次请求的用户身份)n本次请求希望返回的数据类型(json...
android okGO、okHttp、XUtils网络框架使用
android okGO、okHttp、XUtils网络框架使用
Okhttp3菜鸟必入
为啥要学Okhttp3呢,因为Retrofit中用到了,而且它本身也是一个网络框架,不与Retrofit一起用还可以单独用,一石二鸟为啥不学呢。这个相对也比较简单。一、添加依赖 //Okhttp3,后面的那个依赖如果不添加,有说链接不上数据库的,所以还是加上吧,我没添加没啥问题,保险起见n compile 'com.squareup.okhttp3:okhttp:3.3.0'n c
OkHttp网络框架的使用整理
最近的项目中,使用了OkHttp网络框架来上传数据。正好自己在网络这一块还不太熟,借此机会来整理总结一下。nn一、什么是OkHttpnnOkHttp是一个高效的HTTP客户端,通过它可以轻松地实现HTTP请求的发送。它有一些优点,但是具体是什么原理使它拥有这些优点,还需要后续对源码进行分析。nn二、使用方法nn1、GET请求nnOkHttp的请求,是围绕着OkHttpClient来进行的。一个请求...
xml 查询问题
xml 查询问题 急xml 查询问题 急xml 查询问题 急xml 查询问题 急xml 查询问题 急xml 查询问题 急xml 查询问题 急xml 查询问题 急xml 查询问题 急xml 查询问题 急xml 查询问题 急xml 查询问题 急xml 查询问题 急xml 查询问题 急xml 查询问题 急
java 技术 问题 分页
java 技术 问题 分页 教急啊士大夫了
Android使用OkHttp框架下载网络图片
一、OkHttp简介OkHttp是一款优秀的HTTP框架,它支持get请求和post请求,支持基于Http的文件上传和下载,支持加载图片,支持下载文件透明的GZIP压缩,支持响应缓存避免重复的网络请求,支持使用连接池来降低响应延迟问题。OkHttp官网地址:http://square.github.io/okhttp/ nOkHttp GitHub地址:https://github.com/squ
OkHttp使用实例
OkHttp使用实例依赖OkHttp包compile 'com.squareup.okhttp3:okhttp:3.6.0'OkHttp依赖包compile 'com.squareup.okio:okio:1.11.0'json处理包compile 'com.google.code.gson:gson:2.8.0'图示具体例子【封装的两个类,可以直接调用】get方式为例【重在理解原理】import...
Okhttp源码简单解析(一)
Okhttp源码解析:简单流程的梳理
Retrofit和okhttp的了解和使用
张鸿祥博客http://blog.csdn.net/lmj623565791/article/details/51304204nokhttp工具类 https://github.com/hongyangAndroid/okhttp-utils
convert类
急啊!!!
6.61PGGVS78录像
接个电话急啊各地 阿是大环境 阿是大富豪急啊的
你必须学会的okhttp——入门篇
早在毕业那段期间,群里有很多小伙伴在问关于okhttp的问题,当时因为不了解。所以没有回答的上。记得十月份有次面试,一个面试官问我关于网络请求的东西时,我记得当时我是说。我是通过HttpClient封装了一个网络请求的工具类。当然,或许他想问的是我关于okhttp有没有了解把。谷歌在6.0中删除了关于httpclient的API。(其实我有httpclient源码)。于是乎,为了了解下,最近还是学习
用authorware制作电子时钟
供急求authorware作品的人参考!
Android网络请求框架使用 -- OkHttp
一、在build.gradle中引入OkHttp依赖 n 那么我们怎么引入呢,相信对于Android的新手来说可能不知道如何找到依赖包的正确版本。分享一下我是如何正确的找到版本并引入的。 n 1、打开Github,在输入框中输入OkHttp然后回车,点开第一个。在后面的使用介绍当中就可以看到gradle的正确版本了,如果以后有使用其他的开源框架也可以使用同样的方式查看正确的版本。
OKhttp网络获取框架使用
1.获取网络权限nnnnnn2.主函数npublic class MainActivity extends AppCompatActivity {n private ImageView iv;n @Overriden protected void onCreate(Bundle savedInstanceState) {n super.onCreate
okHttp开发框架使用
OkHttp :n支持SPDY, 可以合并多个到同一个主机的请求n使用连接池技术减少请求的延迟(如果SPDY是可用的话)n使用GZIP压缩减少传输的数据量nn缓存响应避免重复的网络请求nokhttp的简单使用,主要包含:n一般的get请求n一般的post请求n基于Http的文件上传n文件下载n加载图片n支持请求回调,直接返回对象、对象集合n支持session的保持n使用
Okhttp 框架使用和源码分析
Okhttp源码的大致流程,和使用的细节。
Web作业设计1.1
HTML形式 简单 菜鸟级 改天重新描述。急
12种最精彩的演讲开场白,让你快速征服听众(四)
n n n nnnnn图片来自网络n7、夸大式如果你想迅速吸引住全场的听众,那你的开场白必须语出惊人。比如,有声有色地描绘了一个异乎寻常的场景,不动声色地列举出一些令人触目惊心的数据,或者栩栩如生地描述了一个耸人听闻的问题。因为只有这样,全场听众才会聚精会神地听你演讲,才会侧耳倾听,力求理解你叙述的主旨,探询你演讲的原因。上面所说的开场白方式叫夸大式,有时也叫“语出惊...
Hibernate懒加载急加载我们需要注意的问题
1、显而易见的概念懒加载——也被称为延迟加载,它在查询的时候不会立刻访问数据库,而是返回代理对象,当真正去使用对象的时候才会访问数据库。急加载——就是只要我们实体做了关联,全部一次性执行完所有的SQL语句2、@OneToMany ****默认为懒加载****n @Testn public void find(){n Session s= sessionFactory.
java web 图书管理系统
比较好的学习项目,实现图书管理系统相关功能
mdmcpq.in文件
急求XP系统中mdmcpq.inf和usbser.sys文件,解决套件无连接!
eclipse版okhttp
eclipse版okhttp解决只导入okhttp报错的问题,包含okhttp,oki 等两个必要的jar文件
急!灾区的食物依然短缺!(找不到原题出处只能这样了.....)
急!灾区的食物依然短缺!n为了挽救灾区同胞的生命,心系灾区同胞的你准备自己采购一些粮食支援灾区,现在假设你一共有资金n元,而市场有m种大米,每种大米都是袋装产品,其价格不等,并且只能整袋购买。n请问:你用有限的资金最多能采购多少公斤粮食呢?n后记:n人生是一个充满了变数的生命过程,天灾、人祸、病痛是我们生命历程中不可预知的威胁。n月有阴晴圆缺,人有旦夕祸福,未来对于我们而言是一个未知数。...
菜鸟Android开发起步遇到的小问题————OKHttp回调时请求后出现的问题
本人在校大三学生,在自学Android,在这里吧学习中遇到的一系列小问题写到这里,希望可以得到答案的同时,也可以给遇到相同问题的各位一个参考。rnrnString up = "username="+""+username+"&password="+""+password;nHttpUtil.SendHttpRequestByOK("http://59.75.83.133:8080/Register
Java Web 图书管理系统
java web图书管理系统。JSP课程设计论文。Java web图书管理系统论文。
OkHttp框架
简介:一个处理网络请求的开源项目,是安卓端最火热的轻量级框架,由移动支付Square公司贡献,用于替代HttpUrlConnection和Apache HttpClient。OkHttp可以支持安卓2.3及以上版本,需要jdk1.7及以上;OkHttp有2.x和OkHttp3.x版本之间的部分方法的使用有一点的差异。优点(百度百科):1、允许连接到同一个主机地址的所有请求,提高请求效率2、共享So...
okhttp访问https的问题
解决方式有两种:nn第一种是绕过https的验证方法:nn新建一个SSLSocketClient工具类,添加如下方法:n nnn//获取这个SSLSocketFactorynpublic static SSLSocketFactory getSSLSocketFactory() {n try {n SSLContext sslContext = SSLContext.getIn...
okhttp 问题总结
前言: 今日付出的汗水,只为明日不一样的自己。唯有坚持不懈的努力,才能过上自己想要的生活rn rn 转载请标明出处: rn http://blog.csdn.net/w690333243/article/details/78609258 rn 更多内容请访问【-小沫-专栏】 rn rnrnrnrnrn一、如果想要打印okhttp的logrnrn则logging-interceptor版本要和okhttp版本保
Artery框架增删改查学习
最近刚刚入职,学习公司的artery框架,当做笔记记一下rn前期准备:rnrn构建查询列表基本步骤:rn1.构造页面(布局)rnrn新建表单rn新增列表区域rn增加字段控件(相关表,设置数据源)rn2.数据源查询(logic)rn在java编写,通过调用service返回结果rn字段的数据源处与pojo类中的属性名称相同即可。rnrnrnrn新增表单基本步骤:rn构造页面(布局):rnrn新建表单rn弹出窗口(linkto/Arter...
opencv 应用程序
opencv 图像识别 啊简单哦啊急哦大家啊啊就啊大
学习笔记| OkHttp+Retrofit+RxJava 实现过期Token自动刷新
利用 Observale 的 retryWhen 的方法,识别 token 过期失效的错误信息,此时发出刷新 token 请求的代码块,完成之后更新 token,这时之前的请求会重新执行,但将它的 token 更新为最新的。另外通过代理类对所有的请求都进行处理,完成之后,我们只需关注单个 API 的实现,而不用每个都考虑 token 过期,大大地实现解耦操作。
Retrofit+okhttp网络框架介绍
网络框架选择过程目前Github上使用比较多的Android Http库依次是Retrofit,okhttp,android-async-http,okhttp-utils,async-http-client,等等; n中间经过一系列的分析,根据start,更新速度,作者,库的实用性,性能,以及拓展性等等,最终选出了3个PK.(Retrofit,okhttp,okhttp-utils) n其中Ret
OkHttp3下载文件失败
OkHttp3下载文件失败场景:服务端将文件放入输出流中,安卓端采用OkHttp3下载失败,但同样的方法可以下载百度上的文件。 n原因:经排查,为安卓端采用OkHttp3下载调用进度条获取不到文件大小而出错,而进度条获取文件大小通过文件头“Content-Length”获取,推测服务端没有传该参数。 n纠错:服务端输出文件流的时候添加文件头。//HttpServletResponse respnre
初探Okhttp网络框架使用(一)
OkHttp使用,简单的利用Get和Post请求数据,请求图片,简单到不能再简单了.....
菜鸟急求!救命啊!!!
请问那位大虾知道如何创建并使用INI文件,比如要实现FTP定时上传文件,将任意输入的时间写进INI文件,然后通过获取系统时间,将获取的系统时间与INI文件中的时间进行比较,为真则进行上传操作。rn小弟初次接触INI文件的使用,所以只是这么设想,不知道具体是不是这样,如有高手熟悉的话,请尽快告诉我!30分奖给你,好的话再加分,急急急急!!!rn
面试题之---Okhttp源码解析
一,Okhttp优点nn 1,它会从很多常用的连接问题中自动回复nn 2,如果你的服务器配置了多个IP地址,当第一个IP连接失败的时候,Okhttp会自动尝试下一个IP.Android4.4版本开始,系统就内置了Okhttp.nnnn二,基本使用nn(一)添加依赖nnnimplementation 'com.squareup.okhttp3:okhttp:3.10.0'nn(...
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 菜鸟学python 大数据技术菜鸟教程