读书人

android 调用webservice有关问题

发布时间: 2012-09-08 10:48:07 作者: rapoo

android 调用webservice问题
问题如下面代码中所述,执行到conn.getOutputStream().write(content.getBytes());//出错了 抛出networkonmainthreadexception异常 请问大侠们是怎么回事啊


代码如下:InputStream in = NumberService.class.getResourceAsStream("mobilesoap.xml");
byte[] data = StreamUtil.load(in);
String content = new String(data);
content = content.replace("$number", number);

// 创建连接对象, 设置请求头, 按照Webservice服务端提供的要求来设置
URL url = new URL("http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setConnectTimeout(5000);
conn.setRequestProperty("Host", "webservice.webxml.com.cn");
//conn.setRequestProperty("Content-type", "application/x-java-serialized-object");
conn.setRequestProperty("Content-Type", "application/soap+xml; charset=utf-8");
conn.setRequestProperty("Content-Length", content.getBytes().length + "");
conn.setRequestMethod("POST");
conn.setUseCaches(false);
// 输出数据
conn.setDoOutput(true);
conn.setDoInput(true);
//conn.connect();

conn.getOutputStream().write(content.getBytes());//出错了 抛出networkonmainthreadexception异常
conn.getOutputStream().flush();
conn.getOutputStream().close();


// // 获取服务端传回的数据, 解析XML, 得到结果
XmlPullParser parser = Xml.newPullParser();
parser.setInput(conn.getInputStream(), "UTF-8");

for (int type = parser.getEventType();type!=XmlPullParser.END_DOCUMENT;type=parser.next())
if(type==XmlPullParser.START_TAG&&parser.getName().equals("getMobileCodeInfoResult")){
return parser.nextText();
}
return "没有找到此号码";

[解决办法]
NetworkOnMainThreadException
提示你不要在主线程中访问网络。

把要访问的网络单独放在一个线程中:

new Thread(){
@Override
public void run()
{
//把你上面那段网络访问的代码放在这里
}
}.start();


[解决办法]
如果是临时测试不是最终发布版本可以通过去掉strictMode来解决
办法是在oncreate中使用如下代码

Java code
public void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);     StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();    StrictMode.setThreadPolicy(policy);  } 

读书人网 >Android

热点推荐