在Android的Activity中使用HttpURLConnection连接到服务端时抛出异常,Access denied。第一个想到是权限问题。然后就尝试将INTERNET权限加上:在Manifest中加上:

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


还是抛异常!看异常信息,和StrictMode有关,想到和Android版本有关,然后在Activity中加上如下代码,问题解决:

StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().detectDiskReads().detectDiskWrites().detectNetwork().penaltyLog().build());


完整代码:

package com.example.quhao_test;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;import android.annotation.TargetApi;import android.app.Activity;import android.os.Build;import android.os.Bundle;import android.os.StrictMode;import android.view.Menu;import android.widget.TextView;public class MainActivity extends Activity {    @TargetApi(Build.VERSION_CODES.GINGERBREAD)@Override    protected void onCreate(Bundle savedInstanceState) {        System.out.println("xxxxxxxxxxxxxxx");            super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);                String strUrl = "http://146.11.24.100:9081/testcontroller/test1?arg=2222";        StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().detectDiskReads().detectDiskWrites().detectNetwork().penaltyLog().build());        URL url = null;        try {url = new URL(strUrl);System.out.println(url.getPort());HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();InputStreamReader in = new InputStreamReader(urlConn.getInputStream());BufferedReader br = new BufferedReader(in);String result = "";String readerLine = null;while((readerLine=br.readLine())!=null){result += readerLine;}in.close();urlConn.disconnect();System.out.println("r:"+result);TextView textView = (TextView)this.findViewById(R.id.result);textView.setText(result);} catch (MalformedURLException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}            }    @Override    public boolean onCreateOptionsMenu(Menu menu) {        // Inflate the menu; this adds items to the action bar if it is present.        getMenuInflater().inflate(R.menu.main, menu);        return true;    }    }


原创文章,转载请指明出处: withiter

更多相关文章

  1. 没有一行代码,「2020 新冠肺炎记忆」这个项目却登上了 GitHub 中
  2. android中通过代码启动应用程序
  3. android 如何使用jar替换java代码编译
  4. Android(安卓)Audio代码分析20 - queryEffects函数
  5. Android(安卓)自定义View 标识当前选中的控件
  6. Android-java.lang.SecurityException: 权限拒绝: 开始的意图
  7. Android中发送短信等普通方法
  8. PopupWindow软键盘弹出,上移
  9. android4.0下使用multiDexEnabled属性的踩坑日记

随机推荐

  1. Android(安卓)HIDL 中 hidl-gen使用
  2. 一个WebView Native Crash分析过程,居然是
  3. 大神博客资源
  4. Android(安卓)Studio无法使用Apache的Htt
  5. Android(安卓)环境搭建
  6. android studio向activity_main.xml中拖
  7. 基于Android(安卓)Studio 的NDK之 “Hell
  8. getHeight returns 0 for all Android(安
  9. Android学习笔记(三) 之模拟打电话
  10. 整理 酷炫 Android、Flutter 开源UI框架