okHttpClient的用法
来源:互联网 发布:midi软件下载 编辑:程序博客网 时间:2024/06/05 19:24
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="okhttp的get同步" android:onClick="getTong" /> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="okhttp的get异步" android:onClick="getYi" /> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="okhttp的post异步" android:onClick="postTong" /> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="post上传文件" android:onClick="postShangchuan" /></LinearLayout>
阅读全文
0 0
- okHttpClient的用法
- https OkHttpClient 的使用
- OKHttpClient的POST请求
- OkHttpClient 的get使用
- OkHttpClient post的使用
- OKHttpClient
- OkHttpClient
- OkHttpClient
- 使用OkHttpClient的GET方式
- 使用 OKHttpClient的POST方式
- OkHttpClient带多个参数的get请求
- Retrofit的简单实用,配置okhttpclient
- MVP结合OKhttpclient的登录操作
- 常用的几种网络请求OkHttpClient , HttpClient和 HttpURLConnection
- react-native 0.43 后如何使用自己的OkHttpClient
- okHttpClient异步同步的get和post请求方法
- okhttp3相关封装配置(一):OkHttpClient的参数配置
- Android OkHttpClient
- 知识
- java基础
- 关于vue优化的那些事
- Linux查看显示编辑文本文件
- hdu 5188
- okHttpClient的用法
- 生产环境DRBD部署安装
- sed工具
- T3-财务报表输出关键字丢失bug
- oracle函数进行日期格式转换
- Java常用的九种排序方法及代码实现
- 课程小结——灰度直方图、Haar-like、HOG、LBP和PCA
- 了解mysql
- 正式走向程序人生