zoukankan      html  css  js  c++  java
  • 安卓通过OkHttp获取json数据

    使用Http协议访问网络

    OkHttp使用

    可以很好的获取接口数据!json数据!

    支持get和post提交方式!!!

    1.引入模块

    compile 'com.squareup.okhttp3:okhttp:3.4.1'
    

    然后系统会自动引入模块

    2.设置权限

    <uses-permission android:name="android.permission.INTERNET" />
    

    支持上网

    3.布局

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        >
    
        <Button
            android:id="@+id/send_request"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Send Request"
            />
    
        <ScrollView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            >
            <TextView
                android:id="@+id/response_text"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                />
        </ScrollView>
    
    </LinearLayout>
    
    

    4.实现功能

    点击按钮,获取接口数据并展示

    package demo.jq.com.networktest;
    
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.TextView;
    
    import java.io.BufferedReader;
    import java.io.EOFException;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.net.HttpURLConnection;
    import java.net.URL;
    
    import okhttp3.FormBody;
    import okhttp3.OkHttpClient;
    import okhttp3.Request;
    import okhttp3.RequestBody;
    import okhttp3.Response;
    
    /**
     * @author jim
     */
    
    public class MainActivity extends AppCompatActivity implements View.OnClickListener{
    
        TextView responseText;
    
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            Button sendRequest = (Button) findViewById(R.id.send_request);
            responseText = (TextView) findViewById(R.id.response_text);
            sendRequest.setOnClickListener(this);
    
        }
    
        @Override
        public void onClick(View v) {
            if (v.getId() == R.id.send_request) {
                sendRequestWithOkHttp();
            }
        }
    
        private void sendRequestWithOkHttp() {
            // 开启线程来发起网络请求
            new Thread(new Runnable() {
                @Override
                public void run() {
                    HttpURLConnection connection = null;
                    BufferedReader reader = null;
                    try {
                        OkHttpClient client = new OkHttpClient();
    
    
                        // post请求
                        RequestBody requestBody = new FormBody.Builder()
                                .add("type","1")
                                .build();
    
    
                        Request request = new Request.Builder()
                                .url("http://devmg.yunlutong.com/api/test/testApi")
                                .post(requestBody)
                                .build();
    
                        Response response = client.newCall(request).execute();
                        String responseData = response.body().string();
                        showResponse(responseData);
                    } catch (Exception e) {
                        e.printStackTrace();
                    } finally {
                        if (reader != null) {
                            try {
                                reader.close();
                            } catch (IOException e) {
                                e.printStackTrace();
                            }
                        }
    
                        if (connection != null) {
                            connection.disconnect();
                        }
                    }
                }
            }).start();
        }
    
        private void showResponse(final String response) {
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    responseText.setText(response);
                }
            });
    
        }
    }
    
    

  • 相关阅读:
    Android开发 default activity not found
    git仓库的初始化
    微服务学习----分布式锁
    Spring boot 学习 ---- Spring Security
    虚拟容器化学习----Docker学习
    Java学习----JVM学习
    spring boot学习 ---- spring boot 之注解(持续更新)
    其他技术----protobuf
    Spring Boot 学习 ---- 监听器
    Spring Boot学习----拦截器
  • 原文地址:https://www.cnblogs.com/jiqing9006/p/7705446.html
Copyright © 2011-2022 走看看