解决Andriod使用HttpURLConnection 失败问题

在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. !!!Android开发、测试持续集成环境Jenkins搭建
  2. Android中万能的BaseAdapter(Spinner,ListView,GridView)的使用!
  3. Android(安卓)JNI 高级篇
  4. 【Android(安卓)SDK 开发】安卓开发常用工具和第三方库汇总
  5. android使用AIDL跨进程通信(IPC)
  6. 关于Android(安卓)Studio无法查看详细的源代码问题解决
  7. Android(安卓)Studio3.6新特性:视图绑定ViewBinding使用指南(Java
  8. java做服务器,android做客户端,实现数据传输
  9. android -- 分享 二次打包植入广告

随机推荐

  1. android 属性个人收集 android:visibilit
  2. Android(安卓)webview微信支付白屏
  3. Android(安卓)文件的上传
  4. Android计算器布局
  5. Android(安卓)shell 创建 模拟器
  6. Android系统定制之bootanimation.zip的制
  7. Android硬件加速
  8. android之socket网络编程
  9. 【Android(安卓)Studio】Android(安卓)St
  10. Android(安卓)O指纹识别解析