温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

HttpURLConnection和okHttp如何获取网络数据

发布时间:2021-05-22 13:32:42 来源:亿速云 阅读:157 作者:小新 栏目:移动开发

这篇文章给大家分享的是有关HttpURLConnection和okHttp如何获取网络数据的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

代码示例

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' }

感谢各位的阅读!关于“HttpURLConnection和okHttp如何获取网络数据”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI