HttpURLConnection和okHttp两种获取网络数据实现

来源:互联网 发布:淘宝号忘记了怎么找回 编辑:程序博客网 时间:2024/06/05 21:06

废话少说,直接上代码。简单易懂。

xml如下:

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:id="@+id/activity_net"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    tools:context="com.example.waterlamp.NetActivity">    <Button        android:id="@+id/okhttp"        android:text="okhttp请求"        android:layout_width="150dp"        android:layout_height="37dp"        android:layout_alignBottom="@+id/http"        android:layout_alignParentEnd="true"        android:layout_alignParentTop="true" />    <Button        android:id="@+id/http"        android:text="HTTP请求"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_alignParentTop="true"        android:layout_alignParentStart="true" />    <ScrollView    android:layout_width="match_parent"    android:layout_height="match_parent"    android:layout_alignParentStart="true"    android:layout_below="@+id/okhttp"    android:layout_alignParentBottom="true"    android:layout_alignParentEnd="true" >        <TextView            android:id="@+id/stringData"            android:layout_width="match_parent"            android:layout_height="match_parent" />    </ScrollView></RelativeLayout>
activity如下:

public class NetActivity extends AppCompatActivity implements View.OnClickListener{private Button http,okhttp;    private TextView stringData;    private String web="https://www.baidu.com";    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_net);        http= (Button) findViewById(R.id.http);        okhttp= (Button) findViewById(R.id.okhttp);        stringData= (TextView) findViewById(R.id.stringData);        http.setOnClickListener(this);        okhttp.setOnClickListener(this);    }    @Override    public void onClick(View v) {       switch (v.getId()){           case R.id.http:               sendRequestWithHttpURLConnection();           break;           case R.id.okhttp:               sendRequestWithokHttp();           break;       }    }    private void sendRequestWithHttpURLConnection(){        new Thread(new Runnable() {            @Override            public void run() {                HttpURLConnection connection=null;                BufferedReader reader=null;                try {                    URL url=new URL(web);                    connection= (HttpURLConnection) url.openConnection();                    connection.setRequestMethod("GET");                    connection.setConnectTimeout(5000);                    connection.setReadTimeout(5000);                    InputStream in=connection.getInputStream();                    reader=new BufferedReader(new InputStreamReader(in));                    StringBuffer response=new StringBuffer();                    String line;                    while ((line=reader.readLine())!=null){                        response.append(line);                    }                    showRespond(response.toString());                } catch (MalformedURLException e) {                    e.printStackTrace();                } catch (IOException e) {                    e.printStackTrace();                }finally {                    if (reader!=null){                        try {                            reader.close();                        } catch (IOException e) {                            e.printStackTrace();                        }                    }                }            }        }).start();    }    private void showRespond(final String response) {        runOnUiThread(new Runnable() {            @Override            public void run() {                stringData.setText(response);            }        });    }    private void sendRequestWithokHttp(){        new Thread(new Runnable() {            @Override            public void run() {                try {                    OkHttpClient client=new OkHttpClient();                    Request request=new Request.Builder()                            .url(web).build();                    Response  response=client.newCall(request).execute();                    String str=response.body().string();                    showRespond(str);                } catch (IOException e) {                    e.printStackTrace();                }            }        }).start();    }}
注意:需要在加权限 
1.<uses-permission android:name="android.permission.INTERNET"/>
2.okhttp3需要在gradle添加依赖
dependencies {    compile fileTree(dir: 'libs', include: ['*.jar'])    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {        exclude group: 'com.android.support', module: 'support-annotations'    })    compile 'com.android.support:appcompat-v7:24.2.1'    compile 'com.android.support:design:24.2.1'    compile 'com.squareup.okhttp3:okhttp:3.4.1'//依赖    testCompile 'junit:junit:4.12'}

1 0
原创粉丝点击