发送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学习笔记---29_构建soap协议内容,发送xml数据和调用webservice,手机号码归属地查询器

29_发送xml数据和调用webservice ---------------------------------------- 1.发送xml数据给web应用   a.可以通过参数的方式:比如...

Android--通过Http协议向web服务器发送XML数据和调用webService

笔记摘要:     这里介绍了向web服务器提交XML实体数据,通过将请求参数和请求方法按照某种协议封装在XML文件中,提交到WebServices(网络上提供的API,天气查询,股票行情     等...

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

Android访问WebService-->不使用ksoap2.jar使用http请求
  • pyfysf
  • pyfysf
  • 2016年12月07日 09:04
  • 536

asp通过json调用webservice接口,并获取返回的xml数据及解析

本事例是asp调用webservice接口,并获取返回的xml数据及解析! Response.Write "测试时间:"&now()&"" dim url,SOAP...
  • kuyz1
  • kuyz1
  • 2017年01月17日 17:26
  • 1156

android 带header调用webservice接口,与.net交互,xml传输数据

这次项目,是关于小学生做试卷答题,但是后台没想到的是.net,需要用webservice  soap协议,如此一来,以往的OKGO啊,OKHttp啊等一些网络请求框架均不能使用了。 这种项目一般还确实...

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

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

Java访问WebService返回XML数据的方法

本文实例讲述了Java访问WebService返回XML数据的方法。分享给大家供大家参考。具体如下: ? 1 2 3 4 5 6 ...

WebService 返回json格式和返回xml格式的数据

返回json格式 //using System.Web.Script.Services; [WebMethod] [ScriptMethod(UseHttpGet =...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:发送xml数据和调用webservice
举报原因:
原因补充:

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