如何解决android使用HttpUrlConnection抛出异常

 我来答
huanglenzhi
2015-01-25 · 知道合伙人数码行家
huanglenzhi
知道合伙人数码行家
采纳数:117538 获赞数:517192
长期从事计算机组装,维护,网络组建及管理。对计算机硬件、操作系统安装、典型网络设备具有详细认知。

向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 · 百度知道合伙人官方认证企业
育知同创教育
1【专注:Python+人工智能|Java大数据|HTML5培训】 2【免费提供名师直播课堂、公开课及视频教程】 3【地址:北京市昌平区三旗百汇物美大卖场2层,微信公众号:yuzhitc】
向TA提问
展开全部

在下面的一个方法里是对这个数据流转换为一个String数据,而这个数据的就是json 的,在在对这个json数据进行解析,这就是程序的核心,其他的对json数据怎么解析以及怎么在Activity使用这个数据,小编在这里不在啰嗦了,不知道的可以在百度上搜一下。

  

  没有修改之前程序的AndroidManifest.xml配置文件的SDK版本信息是这样的,

  

  调试程序可以发现运行到if(conn.getResponseCode() == 200)这段代码的时候就会抛出异常,因为getResponseCode()返回值是0,也就是没有连接成功。

  

  修改程序的AndroidManifest.xml配置文件的SDK版本信息后是这样的,如图。设置最低版本为8,最高版本不超过9,即可。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
约定20125
2015-05-05 · TA获得超过1.5万个赞
知道大有可为答主
回答量:1.1万
采纳率:96%
帮助的人:2902万
展开全部
  在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 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;
}

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式