解决Andriod使用HttpURLConnection 失败问题
16lz
2021-01-25
在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
更多相关文章
- 没有一行代码,「2020 新冠肺炎记忆」这个项目却登上了 GitHub 中
- android中通过代码启动应用程序
- android 如何使用jar替换java代码编译
- Android(安卓)Audio代码分析20 - queryEffects函数
- Android(安卓)自定义View 标识当前选中的控件
- Android-java.lang.SecurityException: 权限拒绝: 开始的意图
- Android中发送短信等普通方法
- PopupWindow软键盘弹出,上移
- android4.0下使用multiDexEnabled属性的踩坑日记