小白求助,我在普通类中发起http请求,结果是成功的,但是为什么访问的时候会包这个错误02-28 15:14:46.172 13954-13954/com.ansuw.proet D/StrictMode: StrictMode policy violation; ~duration=2 ms: android.os.StrictMode$StrictModeNetworkViolation: policy=23 violation=4
                                                                     at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1153)
                                                                     at libcore.io.BlockGuardOs.recvfrom(BlockGuardOs.java:249)
                                                                     at libcore.io.IoBridge.recvfrom(IoBridge.java:553)
                                                                     at java.net.PlainSocketImpl.read(PlainSocketImpl.java:485)
                                                                     at java.net.PlainSocketImpl.access$000(PlainSocketImpl.java:37)
                                                                     at java.net.PlainSocketImpl$PlainSocketInputStream.read(PlainSocketImpl.java:237)
                                                                     at com.android.okio.Okio$2.read(Okio.java:113)
                                                                     at com.android.okio.RealBufferedSource.read(RealBufferedSource.java:48)
                                                                     at com.android.okhttp.internal.http.HttpConnection$ChunkedSource.read(HttpConnection.java:499)
                                                                     at com.android.okio.RealBufferedSource$1.read(RealBufferedSource.java:168)
                                                                     at java.io.InputStream.read(InputStream.java:162)
                                                                     at com.ansuw.ser.ser.jsonpost(ser.java:50)
                                                                     at com.ansuw.entity.HandleData.getInfo_data(HandleData.java:42)
                                                                     at com.ansuw.activity.MainActivity$17.handleMessage(MainActivity.java:785)
                                                                     at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                     at android.os.Looper.loop(Looper.java:135)
                                                                     at android.app.ActivityThread.main(ActivityThread.java:5257)
                                                                     at java.lang.reflect.Method.invoke(Native Method)
                                                                     at java.lang.reflect.Method.invoke(Method.java:372)
                                                                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:902)
                                                                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:697)

解决方案 »

  1.   

    这是请求方式
    public static String jsonpost(String action, String json) {        URL url;
            String result = null;
            try {            url = new URL(action);            HttpURLConnection http = (HttpURLConnection) url.openConnection();            http.setRequestMethod("POST");            http.setRequestProperty("Content-Type",                    "application/x-www-form-urlencoded");            http.setDoOutput(true);            http.setDoInput(true);            System.setProperty("sun.net.client.defaultConnectTimeout", "30000");// 连接超时30秒            System.setProperty("sun.net.client.defaultReadTimeout", "30000"); // 读取超时30秒            http.connect();            OutputStream os = http.getOutputStream();            os.write(json.getBytes("UTF-8"));// 传入参数            InputStream is = http.getInputStream();            int size = is.available();            byte[] jsonBytes = new byte[size];            is.read(jsonBytes);            result = new String(jsonBytes, "UTF-8");            System.out.println("请求返回结果:" + result);            os.flush();            os.close();        } catch (Exception e) {            e.printStackTrace();        }
            return result;    }