发送xml数据和调用webservice

原创 2015年07月10日 15:50:50

刚开始学习安卓,对照视频在Android Studio平台下练习项目,实现手机号码归属地查询。过程中遇到两个问题:

一:找不到资源文件

视频讲解是在eclipse平台,资源文件直接放到src根下面就可以。而我把资源文件soap12.xml放到java根路径下,以及放到当前包下,死活得不到文件,提示inStream为null。如下:

InputStream inStream = AddressService.class.getClassLoader().getResourceAsStream("soap12.xml"); //AddressService为自定义的业务类

不知道是不是类加载器的使用方式问题还是路径问题。

把soap12.xml文件放到res/raw下,换成以下方法来获取,结果成功:

InputStream inStream = context.getResources().openRawResource(R.raw.soap12);

需要说明的是,getResource()是Activity的函数,若自定义的类没有继承Activity的话就无法使用该API,故需要建一个构造器,然后把Activity传给该类。


二:请求网络数据不成功

原来的代码:

//        HttpURLConnection conn = (HttpURLConnection) new URL(path).openConnection();
//        conn.setConnectTimeout(5000);
//        conn.setRequestMethod("POST");
//        conn.setDoOutput(true);
//        conn.setRequestProperty("Content-Type", "application/soap+xml; charset=utf-8");
//        conn.setRequestProperty("Content-Length", String.valueOf(entity.length));
//        conn.getOutputStream().write(entity);
//        if(conn.getResponseCode() == 200){
//            return parseSOAP(conn.getInputStream());
//        }
//        return null;
修改后的代码:   
new Thread(new Runnable(){ public void run() {
    try{
        HttpURLConnection conn = (HttpURLConnection) new URL(path).openConnection();
        conn.setConnectTimeout(5000);
        conn.setRequestMethod("POST");
        conn.setDoOutput(true);
        conn.setRequestProperty("Content-Type", "application/soap+xml; charset=utf-8");
        conn.setRequestProperty("Content-Length", String.valueOf(entity.length));
        conn.getOutputStream().write(entity);
        if(conn.getResponseCode() == 200){
           final String str =  parseSOAP(conn.getInputStream());
            result = str;
        }
    }catch(Exception e){
        e.printStackTrace();
    }
}}).start();
return result;
   //以上代码放到线程里面就可以了!

视频讲解同样请求非本机上的网络数据,没有放到线程里面就成功了。不知道为什么,以后请求网路资源就重开一个线程好了!

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Android使用webService(发送xml数据的方式,不使用jar包)

Android访问WebService-->不使用ksoap2.jar使用http请求

用axis方式调用WebService,返回类型为字符串数组(包括把数据库数据导出存为xml,xml转化成字符串)

import java.io.File; import java.rmi.RemoteException; import javax.xml.namespace.QName; import java...

Android发送SOAP数据给服务器调用webservice,实现手机号归属地查询

创建android工程MobileBelong,设置网络访问权限。   资源 view plaincopy to clipboardprint? string name="...
  • mm2223
  • mm2223
  • 2011-12-26 08:05
  • 2662

Android发送SOAP数据给服务器调用webservice,实现手机号归属地查询

创建android工程MobileBelong,设置网络访问权限。   资源 Hello World, MainActivity! 手机号归属地查询 手机号 ...

用JavaScript与WebService实现网页部分数据XML传送

B/S结构的程序每执行一个操作往往都需要刷新页面,在刷新过程中,服务器不但要将数据发送到客户端,还需要将一些格式信息,比如说表格、图片、标题等重新发送,占用了大量带宽。尽管IE提供了页面缓存的功能,但...

2.Webservice返回json数据并去掉Xml头部。

问题: 我将结果内容用字符串拼接成Json数据并返回的时候,会在结果前面添加xml头部,结果如下。 {"data":[{"batchId":"B001","produceOrderId":"",...

用JavaScript与WebService实现网页部分数据XML传送

B/S结构的程序每执行一个操作往往都需要刷新页面,在刷新过程中,服务器不但要将数据发送到客户端,还需要将一些格式信息,比如说表格、图片、标题等重新发送,占用了大量带宽。尽管IE提供了页面缓存的功能,但...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)