borrow用法及短语(that is ok用法)

publicclassMainActivityextendsAppCompatActivity{Stringpath=”https://www.zhaoapi.cn/ad/getAd”;@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(

大家好,又见面了,我是你们的朋友全栈君。

public class MainActivity extends AppCompatActivity {
String path="https://www.zhaoapi.cn/ad/getAd";
@Override
    protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void getTong(View view) {
new Thread(){
@Override
            public void run() {
super.run();
OkHttpClient okHttpClient = new OkHttpClient();//创建客户端对象  Request builder = new Request.Builder()
.url(path)//指定访问路径  .build();//提交请求  Call call = okHttpClient.newCall(builder);//用客户端调用请求对象  //开始执行 ....指定是同步还是异步  Response execute = null;//同步  try {
execute = call.execute();
if(execute.isSuccessful()){
//判断是否请求成功  final String pp=execute.body().string();
// Log.i("jiba","------"+pp);  runOnUiThread(new Runnable() {
@Override
                            public void run() {
Toast.makeText(MainActivity.this,pp.substring(0,20),Toast.LENGTH_SHORT).show();
}
});
}else{
Log.i("jiba","你是sss!");
}
} catch (IOException e) {
e.printStackTrace();
}
}
}.start();
}
public void getYi(View view) {
OkHttpClient okHttpClient = new OkHttpClient();
Request builder = new Request.Builder().url(path).build();
Call call = okHttpClient.newCall(builder);
call.enqueue(new Callback() {
//请求错误所走的方法  @Override
            public void onFailure(Call call, IOException e) {
e.printStackTrace();//打印错误日志  }
//请求成功所走的方法  @Override
            public void onResponse(Call call, Response response) throws IOException {
String s = response.body().string();
Log.i("jiba","======"+s);
}
});
}
public void postTong(View view) {
OkHttpClient okHttpClient = new OkHttpClient();
FormBody formBody = new FormBody.Builder()
.add("mobile","18360981994")
.add("password","123456")
.build();
Request builder = new Request.Builder()
.post(formBody)
.url("https://www.zhaoapi.cn/user/reg")
.build();
Call call = okHttpClient.newCall(builder);
call.enqueue(new Callback() {
@Override
            public void onFailure(Call call, IOException e) {
e.printStackTrace();
}
@Override
            public void onResponse(Call call, Response response) throws IOException {
final String string = response.body().string();
runOnUiThread(new Runnable() {
@Override
                    public void run() {
Toast.makeText(MainActivity.this, string,Toast.LENGTH_SHORT).show();
}
});
}
});
}
public void postShangchuan(View view) {
//A.检查用户是否已经允许了权限....PackageManager.PERMISSION_GRANTED代表的是用户已经允许   if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
//B.不允许...的时候,,,请求用户允许这个权限  // Activity arg0代表当前的activity, @NonNull String[] arg1请求的权限的数组,也就是需要请求允许哪些权限, int arg2请求码  ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 1001);
}else {
//允许...上传文件  postFile();
}
}
private void postFile() {
OkHttpClient okHttpClient = new OkHttpClient();
//2.指定文件的类型 image/jpg image/png video/mp4 ...mimeType  MediaType mediaType = MediaType.parse("text/x-markdown;charset=utf-8");
//3.指定要上传的文件对象  File file = new File(Environment.getExternalStorageDirectory(),"wang.txt");
Request request = new Request.Builder()
//上传文件的时候请求体使用RequestBody.create()获取okhttp3.MediaType contentType  // 文件的类型,@NotNull java.io.File file上传的文件对象  .post(RequestBody.create(mediaType, file))
.url("https://api.github.com/markdown/raw")
.build();
Call call = okHttpClient.newCall(request);
call.enqueue(new Callback() {
@Override
            public void onFailure(Call call, IOException e) {
}
@Override
            public void onResponse(Call call, final Response response) throws IOException {
runOnUiThread(new Runnable() {
@Override
                    public void run() {
try {
Toast.makeText(MainActivity.this,response.body().string(),Toast.LENGTH_SHORT).show();
} catch (IOException e) {
e.printStackTrace();
}
}
});
}
});
}
}
布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout  xmlns:android="http://schemas.android.com/apk/res/android"  xmlns:app="http://schemas.android.com/apk/res-auto"  xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"  android:orientation="vertical"  android:layout_height="match_parent" tools:context="one.bw.com.okhttpqingqiu.MainActivity">
<Button  android:layout_width="match_parent"  android:layout_height="wrap_content"  android:text="okhttpget同步"  android:onClick="getTong"  />
<Button  android:layout_width="match_parent"  android:layout_height="wrap_content"  android:text="okhttpget异步"  android:onClick="getYi"  />
<Button  android:layout_width="match_parent"  android:layout_height="wrap_content"  android:text="okhttppost异步"  android:onClick="postTong"  />
<Button  android:layout_width="match_parent"  android:layout_height="wrap_content"  android:text="post上传文件"  android:onClick="postShangchuan"  />
</LinearLayout>
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/127786.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 吐血总结!50道Python面试题集锦(附答案)「建议收藏」

    吐血总结!50道Python面试题集锦(附答案)「建议收藏」Python是目前编程领域最受欢迎的语言。在本文中,我将总结Python面试中最常见的50个问题。每道题都提供参考答案,希望能够帮助你在2019年求职面试中脱颖而出,找到一份高薪工作。这些面试题涉及Python基础知识、Python编程、数据分析以及Python函数库等多个方面。Q1、Python中的列表和元组有什么区别?Q2、Python的主要功能是什么?Python是一种解释型…

  • 像素,分辨率,PPI(像素密度),BPP 扫盲

    像素,分辨率,PPI(像素密度),BPP 扫盲像素于分辨率像素,又称画素,为图像显示的基本单位,译自英文“pixel”,pix是英语单词picture的常用简写,加上英语单词“元素”element,就得到pixel,故“像素”表示“图像元素”之意,有时亦被称为pel(picture element)。每个这样的信息元素不是一个点或者一个方块,而是一个抽象的采样。仔细处理的话,一幅图像中的像素可以在任何尺度上看起来都不像分离的点或者方块;但…

  • JMH探索

    JMH探索JMH探索一、JMH基本介绍1.1什么是JMH1.2JMH入门二、JMH的基本概念和配置2.1例2.2基本标签介绍2.3控制台输出2.4常用模式(Mode)2.5迭代(Iteration)2.6预热(Warmup)2.7配置类(Options)2.8状态(State)三、JMH注意事项3.1Dead-Code代码3.2黑洞3.3常量折叠3.4避免循环3.5分叉四、可视化JMH基本介绍什么是J

  • MySQL8.0设置简单密码

    MySQL8.0设置简单密码

  • curl命令调试接口「建议收藏」

    一.场景再现大家好,很快就过年了,在这里先祝各位新年快乐,阖家欢乐!现在我们切入主题,在我们平时开发接口完成后,需要上线联调接口,而接口往往和业务逻辑精密联系,想要调试接口,就需要将业务测一遍,那么有没有更好的办法使得调试更简单?在这篇文章中,我将常用的接口分为两类:第一类:自己开发服务于自己系统的接口,该类接口调试可以在本地使用postman工具调试;第二类:不是自己开发,调用别人能力…

  • vue跨域解决的几种方案「建议收藏」

    vue跨域解决的几种方案「建议收藏」vue跨域解决的几种方案一、开发环境解决跨域方法平时使用vue开发的时候,大多会使用vue-cli搭建项目,在vue-cli搭建的项目中有一个配置文件vue.config.js,可以在该文件中进行相应的配置解决开发环境的跨域问题。第一步设置公共urlapi/index.jsimportaxiosfrom’axios’importrouterfrom’@/router/index.js’importstorefrom’@/store/index.js’//创建一个axios

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号