如何解决android使用HttpUrlConnection抛出异常
2015-01-25 · 知道合伙人数码行家
知道合伙人数码行家
向TA提问 私信TA
1
可以看到上面的方法使用的是HttpUrlConnection得到的一个json的数据流,在下面的一个方法里是对这个数据流转换为一个String数据,而这个数据的就是json 的,在在对这个json数据进行解析,这就是程序的核心,其他的对json数据怎么解析以及怎么在Activity使用这个数据,小编在这里不在啰嗦了,不知道的可以在百度上搜一下。
2
没有修改之前程序的AndroidManifest.xml配置文件的SDK版本信息是这样的,
3
调试程序可以发现运行到if(conn.getResponseCode() == 200)这段代码的时候就会抛出异常,因为getResponseCode()返回值是0,也就是没有连接成功。
4
修改程序的AndroidManifest.xml配置文件的SDK版本信息后是这样的,如图。设置最低版本为8,最高版本不超过9,即可。
2018-08-03 · 百度知道合伙人官方认证企业
在下面的一个方法里是对这个数据流转换为一个String数据,而这个数据的就是json 的,在在对这个json数据进行解析,这就是程序的核心,其他的对json数据怎么解析以及怎么在Activity使用这个数据,小编在这里不在啰嗦了,不知道的可以在百度上搜一下。
没有修改之前程序的AndroidManifest.xml配置文件的SDK版本信息是这样的,
调试程序可以发现运行到if(conn.getResponseCode() == 200)这段代码的时候就会抛出异常,因为getResponseCode()返回值是0,也就是没有连接成功。
修改程序的AndroidManifest.xml配置文件的SDK版本信息后是这样的,如图。设置最低版本为8,最高版本不超过9,即可。
<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 block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.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;
}
}