救救可怜的孩子吧
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 | package com.example.connection; import androidx.appcompat.app.AppCompatActivity; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.util.AttributeSet; import android.view.View; import android.widget.Button; import android.widget.ImageView; import java.io.IOException; import java.io.InputStream; import java.lang.ref.WeakReference; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.ProtocolException; import java.net.URL; public class MainActivity extends AppCompatActivity implements View.OnClickListener{ private static final int GET_DATA_SUCCESS = 1 ; private static final int SERVER_ERROR = 2 ; private Button button; private ImageView imageView; private DiglettHandler mHandler = new DiglettHandler( this ); @Override protected void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); setContentView(R.layout.activity_main); button=(Button)findViewById(R.id.button); imageView=(ImageView)findViewById(R.id.image_view); button.setOnClickListener( this ); } public void onClick(View v){ switch (v.getId()){ case R.id.button: new GetPicThread().start(); break ; } } public static class DiglettHandler extends Handler { public final WeakReference<MainActivity> mWeakReference; public DiglettHandler(MainActivity activity){ mWeakReference = new WeakReference<>(activity); } public void handleMessage(Message msg) { super .handleMessage(msg); MainActivity activity = mWeakReference.get(); Bitmap bitmap = (Bitmap) msg.obj; activity.imageView.setImageBitmap(bitmap); } } public class GetPicThread extends Thread implements Runnable { public void run() { try { //获取请求的url地址 URL url = new URL( "https://img1.sycdn.imooc.com//5adfee7f0001cbb906000338-240-135.jpg" ); //获得URL请求连接的对象 HttpURLConnection connection = (HttpURLConnection) url.openConnection(); //设置超时时间 connection.setConnectTimeout( 100 * 1000 ); //设置请求的方式 connection.setRequestMethod( "GET" ); //传输数据包格式 connection.setRequestProperty( "Content0-Type" , "application/json" ); //传输数据的格式 connection.setRequestProperty( "Charset" , "UTF-8" ); connection.setRequestProperty( "Accept-Charset" , "UTF-8" ); connection.connect(); //发起连接 int resopnseCode = connection.getResponseCode(); String responseMessage = connection.getResponseMessage(); if (resopnseCode == HttpURLConnection.HTTP_OK) { InputStream inputStream = connection.getInputStream(); //使用工厂把网络的输入流生产Bitmap Bitmap bitmap = BitmapFactory.decodeStream(inputStream); //利用Message把图片发给Handler Message msg = Message.obtain(); msg.obj = bitmap; msg.what = GET_DATA_SUCCESS; mHandler.sendMessage(msg); inputStream.close(); } else { //服务启发生错误 mHandler.sendEmptyMessage(SERVER_ERROR); } } catch (ProtocolException e) { e.printStackTrace(); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } } 老师我点了按钮后图片不显示,我已经添加了网络权限了 报错信息: 2019 - 10 - 23 12 : 24 : 15.807 12409 - 18176 /? E/ResolverController: No valid NAT64 prefix ( 100 , <unspecified>/ 0 ) 2019 - 10 - 23 12 : 24 : 15.822 18127 - 18175 /com.example.connection W/System.err: java.net.SocketException: socket failed: EPERM (Operation not permitted) 2019 - 10 - 23 12 : 24 : 15.822 18127 - 18175 /com.example.connection W/System.err: at java.net.Socket.createImpl(Socket.java: 492 ) 2019 - 10 - 23 12 : 24 : 15.822 18127 - 18175 /com.example.connection W/System.err: at java.net.Socket.getImpl(Socket.java: 552 ) 2019 - 10 - 23 12 : 24 : 15.822 18127 - 18175 /com.example.connection W/System.err: at java.net.Socket.setSoTimeout(Socket.java: 1180 ) 2019 - 10 - 23 12 : 24 : 15.822 18127 - 18175 /com.example.connection W/System.err: at com.android.okhttp.internal.io.RealConnection.connectSocket(RealConnection.java: 143 ) 2019 - 10 - 23 12 : 24 : 15.824 18127 - 18175 /com.example.connection W/System.err: at com.android.okhttp.internal.io.RealConnection.connect(RealConnection.java: 116 ) 2019 - 10 - 23 12 : 24 : 15.824 18127 - 18175 /com.example.connection W/System.err: at com.android.okhttp.internal.http.StreamAllocation.findConnection(StreamAllocation.java: 186 ) 2019 - 10 - 23 12 : 24 : 15.824 18127 - 18175 /com.example.connection W/System.err: at com.android.okhttp.internal.http.StreamAllocation.findHealthyConnection(StreamAllocation.java: 128 ) |
11
收起
正在回答 回答被采纳积分+1
1回答
2.Android 网络操作与流行框架
- 参与学习 人
- 提交作业 220 份
- 解答问题 1800 个
本阶段是联网及数据处理的必备技能。课程从网络基础知识到线程间协同工作、异步下载处理;从文件存储、到轻量级数据库SQLite的使用;最后利用最流程的第三方框架助你快速开发企业级APP。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧