import com.zhy.http.okhttp.OkHttpUtils; //导入方法依赖的package包/类

@Override

public void performRequestAsync(AyoRequest request, BaseResponseDispatcher responseHandler, BaseHttpCallback callback) {

String url = request.url;

//基于OkHttpUtils辅助类

//1 method决定了OkHttpRequestBuilder的哪个子类

if(request.method.equalsIgnoreCase("get")){

OkHttpUtils

.get()

.headers(request.headers)

.url(url)

.tag(request.flag)

.build()

.execute(new MyStringCallback(request, responseHandler, callback));

}else if(request.method.equalsIgnoreCase("post")){

boolean hasStringEntity = (request.stringEntity != null && !request.stringEntity.equals(""));

boolean postFileLikeForm = (request.files != null && request.files.size() > 0);

boolean postFileLikeStream = (request.file != null);

//情况1:postForm

if(!hasStringEntity && !postFileLikeForm && !postFileLikeStream){

OkHttpUtils

.post()//

.url(url)

.headers(request.headers)

.params(request.params)

.tag(request.flag)

.build()

.execute(new MyStringCallback(request, responseHandler, callback));

}

//情况2:postString

//情况3:postFile--流形式,不带name,带mime

//情况4:postFile--表单形式,带name,带filename

if(hasStringEntity){

OkHttpUtils

.postString()

.url(url)

.headers(request.headers)

.mediaType(MediaType.parse("application/json; charset=utf-8"))

.content(request.stringEntity)

.tag(request.flag)

.build()

.execute(new MyStringCallback(request, responseHandler, callback));

}else if(postFileLikeStream){

OkHttpUtils

.postFile()

.url(url)

.headers(request.headers)//

.file(request.file)

.build()

.execute(new MyStringCallback(request, responseHandler, callback));

}else if(postFileLikeForm){

PostFormBuilder b = OkHttpUtils.post();

for(String key: request.files.keySet()){

File f = request.files.get(key);

b.addFile(key, f.getName(), f);

}

b.url(url)//

.params(request.params)//

.headers(request.headers)//

.build()//

.execute(new MyStringCallback(request, responseHandler, callback));

}

}else{

throw new RuntimeException("使用了不支持的http谓词:" + request.method);

}

}

okhttputils java_Java OkHttpUtils.post方法代码示例相关推荐

  1. drawimage的用法 java_Java Graphics.drawImage方法代码示例

    本文整理汇总了Java中javax.microedition.lcdui.Graphics.drawImage方法的典型用法代码示例.如果您正苦于以下问题:Java Graphics.drawImag ...

  2. findclass java_Java Context.findClass方法代码示例

    import jdk.nashorn.internal.runtime.Context; //导入方法依赖的package包/类 private static Class> simpleType ...

  3. Bytes int java_Java Bytes.readInt方法代码示例

    import net.openhft.chronicle.bytes.Bytes; //导入方法依赖的package包/类 @NotNull @Override public CharSequence ...

  4. object getkey java_Java S3Object.getKey方法代码示例

    import com.amazonaws.services.s3.model.S3Object; //导入方法依赖的package包/类 private S3Object decipher(GetOb ...

  5. fileset java_Java FileSet.iterator方法代码示例

    import org.apache.tools.ant.types.FileSet; //导入方法依赖的package包/类 public void execute() throws BuildExc ...

  6. x509代码实例java_Java X509AttributeCertificate.getIssuer方法代码示例

    import org.bouncycastle.x509.X509AttributeCertificate; //导入方法依赖的package包/类 /** * Parses the contents ...

  7. toolbar java_Java ToolBar.layout方法代码示例

    import org.eclipse.swt.widgets.ToolBar; //导入方法依赖的package包/类 protected ToolBar createToolbar() { fina ...

  8. getAttribute实例例java_Java ExifInterface.getAttribute方法代码示例

    import android.media.ExifInterface; //导入方法依赖的package包/类 public static void copyExif(ExifInterface or ...

  9. textlayout Java_Java TextLayout.getBounds方法代码示例

    import java.awt.font.TextLayout; //导入方法依赖的package包/类 /** * {@inheritDoc} */ @Override public void pa ...

  10. strip string java_Java StringUtils.strip方法代码示例

    import org.apache.commons.lang.StringUtils; //导入方法依赖的package包/类 public static void copyResourceFolde ...

最新文章

  1. Bitmap Font 报错“characters from the file are not available in the font”解决办法
  2. HDU 4850 Wow! Such String! 【欧拉回路】【一顿乱构造】
  3. 2020年快手校招JAVA岗笔试第一题
  4. 存储过程 SQL server(01)
  5. 第四篇 Entity Framework Plus 之 Batch Operations
  6. 最小生成树prim (c++ 已大改)
  7. 招聘 | 大疆算法类未来大咖招聘
  8. 算法高级(24)-一致性哈希算法在分布式系统中的使用场景
  9. Spring Cloud Stream与RabbitMQ 消费者 消息分组
  10. spring boot @value_spring+vue全栈开发实战-第二章Spring Boot 基础配置-笔记0302-2020
  11. 高级着色语言HLSL入门(7)
  12. 常用的C++ STL
  13. React.js 组件的 props vs state
  14. Emacs下使用Stardict
  15. 如何下载免费高清Google谷歌卫星3D地图?
  16. mmsi是代表船舶什么_海上移动业务识别码(MMSI)是一种九位识别码,主要分配给()在DSC和NBDP通信中相互识别身份是使用。...
  17. 【场景实现】Vue+element如何让帖子评论带上emoji,这个需求让我在富文本Quill开始了踩坑连连看
  18. 15.6寸键盘的详细介绍
  19. 宁王比神联手,率锂电池和材料厂,决战锂矿
  20. 用NDK交叉编译pixman-0.34

热门文章

  1. 第二十五章补充内容 5 不能为0的变量
  2. [转载]Android Layout标签之-viewStub,requestFocus,merge,include
  3. Prism For WPF Login对话框又简单又合理的方案之一
  4. 无需羡慕,今后.NET开发想拿30k也可以毫不费劲!
  5. 部署Dotnet Core应用到Kubernetes(二)
  6. .NET Core + Kubernetes:StatefulSet
  7. .NET Core全Linux开发体验分享
  8. 原创 | 为什么年终奖是一个彻头彻尾的职场圈套?
  9. 如何正确的探索 Microsoft Ignite The Tour
  10. 亲自实践Blazor构建桌面应用程序