`
JNSHILANG
  • 浏览: 58981 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

自己调用webservice方法总结(带请求头SoapHeader)

阅读更多
调用webservice总结:
  1.加入第三方的jar包 Ksoap2-android-XXX 
  2.访问响应的webservice的网站,查看响应的信息,得到nameSpace,methodName,url,soapAction
  3.如果request信息还有带有SoapHander的。那么就要封装:依据参数封装
                Element[] header = new Element[1];
                header[0] = new Element().createElement(nameSpace, "SoapHeader");
               
                Element userName = new Element().createElement(nameSpace, "UserID");
                userName.addChild(Node.TEXT, UserID);
                header[0].addChild(Node.ELEMENT, userName);
               
                Element pass = new Element().createElement(nameSpace, "PassWord");
                pass.addChild(Node.TEXT, PassWord);
                header[0].addChild(Node.ELEMENT, pass);
  4.封装request信息的SoapBody
                                 // 指定WebService的命名空间和调用的方法名
                                SoapObject  soapObject=new SoapObject(nameSpace, methodName);
                                //处理soap12:Body数据部分
                                soapObject.addProperty("loginName",username);
                                soapObject.addProperty("password",password);
   5.指定SoapSerializationEnvelope信息
                SoapSerializationEnvelope   envelope=new SoapSerializationEnvelope(SoapEnvelope.VER11);
                                //SoapEnvelope.VER11 表示使用的soap协议的版本号 1.1 或者是1.2
                envelope.headerOut=header;
                envelope.bodyOut=soapObject;
                envelope.dotNet = true; //指定webservice的类型的(java,PHP,dotNet)
                envelope.setOutputSoapObject(soapObject);
        6.指定HttpTransportSE
                    HttpTransportSE ht = new HttpTransportSE(url);
        7.访问webservice服务器
                    ht.call(soapAction, envelope);
        8.两种方式获取服务器返回的信息
                                envelope.getResponse();
                                       
                            envelope.bodyIn;
                                两者的区别:Webservice开发的时候一般情况下大家接受webservice服务器返回值的时候都是使用
                            SoapObject soapObject = (SoapObject) envelope.getResponse();这个来接受返回
                                                        来的值,但这种方法往往会产生java.lang.ClassCastException: org.ksoap2.
                                                        serialization.SoapPrimitive这样的错误。
                                                        在服务器端返回值是String类型的数值的时候使用SoapObject soapObject = (SoapObject)
                            envelope.getResponse()会产生java.lang.ClassCastException: org.ksoap2.
                                                        serialization.SoapPrimitive这样的错误。
                                                        使用SoapObject result = (SoapObject)envelope.bodyIn和 Object object =
                            envelope.getResponse();就可以解决这种错误。 如果服务器返回值的类型是byte[] 的时候,
                                                        使用Object object = envelope.getResponse();和SoapObject result = (SoapObject)envelope.bodyIn;
                            都不会发生错误现象,但是在使用Object object = envelope.getResponse();
                            取回来的值在使用base64进行解码和编码的时候会报出错误。如果使用SoapObject result = (SoapObject)envelope.bodyIn;
                            就可以完整的将byte[]进行解码和编码,byte[] ops = Base64.decode(result.getProperty(0).toString());
                SoapObject result=(SoapObject) envelope.bodyIn;
                String str=result.getProperty(0).toString();
                或者是
           Object  result=        (Object) reqVo.envelope.getResponse();
       String str=result.toString();
        9.解析字符串str获取客户端想要的信息
分享到:
评论
2 楼 左手指的茧 2016-03-01  
为什么报错,header中username password无法序列化?
1 楼 一夕剑 2013-10-21  
请问一下,封装的头信息,在webservice中怎么取啊??

相关推荐

    C#静态调用带有SoapHeader验证的WebService

    关于此代码的使用及相关配置,可以见此文:...代码开发时环境:Windows8.1、Visual Studio 2013、IIS8 注意:测试代码时,重新部署WebService服务且修改客户端测试程序的服务引用

    .net调用java xfire发布的webservice封装soapheader头信息

    标题与描述均提到了“.NET调用Java XFire发布的WebService封装SOAPHeader头信息”,这是一个涉及跨平台服务调用的问题,具体来说是关于如何在.NET环境中调用由Java使用XFire框架发布的WebService,并正确处理...

    C#调用使用java的带soaphead的webservice

    最后,`C#调用使用java的带saophead的webservice-说明书.docx`应该是详细的步骤指南,包含了如何配置和调用Web服务的具体细节。确保按照说明书的指示操作,以确保正确地设置了SOAP Header和调用了Web服务。 总的来...

    Java Webservice Axis2 Client(含soapheader验证)

    这通常涉及创建请求对象,设置参数,然后调用服务方法。 ```java YourWebServiceProxy proxy = new YourWebServiceProxy(); YourWebServiceResponse response = proxy.yourWebServiceMethod(requestObject); ``...

    Axis2教程和java调用webservice的各种方法总结

    标题“Axis2教程和java调用webservice的各种方法总结”表明了本文档主要聚焦于两个核心内容:一是Axis2框架的使用教程,二是Java语言调用Web服务的不同方法的综合概述。 描述中的“Axis2教程”暗示了会详细讲解Axis...

    C#通过SOAP使用HttpWebRequest调用带有身份验证的WebService示例

    本示例使用C#构造SOAP信息,通过HttpWebRequest调用java编写的带有Windows身份验证的WebService,代码中详细注释了每行代码的功能与作用; 对应文章:http://blog.csdn.net/cgs_______/article/details/77894599

    C# 为webservice接口添加认证

    4. **客户端调用**:在客户端,你需要创建SoapHeader实例,并将其添加到请求消息中。然后,你可以调用Web Service方法。 ```csharp var client = new YourWebServiceClient(); var authHeader = new ...

    推荐使用.NET调用java编写的WebService方法借鉴.pdf

    5. **代码实现**:调用WebService的代码通常涉及使用HttpWebRequest或HttpClient类来发送HTTP POST请求,并附带构建好的XML数据。在.NET中,可以通过`System.IO`和`System.Xml`命名空间的类来读取和修改XML文件,...

    WebService加密 for SoapHeader

    在WebService客户端,我们需要配置SSL连接,并在发送请求时,将敏感信息如认证凭证封装到SoapHeader中。在服务器端,接收并解密SoapHeader,然后进行相应的处理。 案例中的申明可能包括定义一个自定义的SoapHeader...

    JAVA6开发WebService (四)——SAAJ调用WebService

    总结来说,使用SAAJ调用WebService涉及对SOAP消息的理解和操作,包括创建SOAP消息结构、设置HTTP头、发送请求和解析响应。开发者应熟悉SAAJ提供的类和接口,以及SOAP和WSDL的基本概念,以便于在Java 6环境中高效地...

    .NET 访问JAVA的WEBSERVICE使用SOAP头

    为了确保SOAP头能够在调用时正确传递,需要在调用的Web服务方法上添加`[System.Web.Services.Protocols.SoapHeaderAttribute]`属性,并引用之前定义的SOAP头实例。 ```csharp [System.Web.Services.Protocols....

    C#调用JAVA的WebService方法[归类].pdf

    1. 使用**soapUI**工具进行测试:soapUI是一款强大的SOAP和REST测试工具,它可以模拟调用WebService,并自动生成对应的XML请求。这为我们提供了一个基础模板,我们可以在其中修改和填充必要的参数。 2. **创建XML...

    ASP.NET中基于soaphead的webservice安全机制

    使用soaphead方法可以在webservice的请求中增加头部信息,当有人调用我们的webservice时,可以通过查询这个请求的头部信息并验证来防止该软件以外的程序调用webservice 一、服务端部分 using System; using System....

    VC调用WebServcve安全验证

    总结来说,通过在SoapHeader中传递认证信息,可以实现客户端调用WebService的安全验证。然而,这只是一个基本的安全措施,实际部署时应结合更强大的安全策略,以防止未授权的访问和数据泄露。同时,随着技术的发展,...

    ASP.NET中Webservice安全 实现访问权限控制

    本文将探讨如何在***平台下实现Webservice的安全设置,并提供两种主要方法:基于SOAP头部(SoapHeader)的实现和基于SoapExtensionAttribute的实现。 首先,我们需要了解Web Services的基本概念。Web Services是一...

    soapHeader验证例子

    接着,使用`call`方法发送SOAP请求,同时设置SOAP头。这里的SOAP请求需要包含正确的SOAP Header信息,以通过服务端的验证。 5. **过程文档**: WebService验证soapHeader.txt文件很可能是详细描述了如何配置...

    WebService:Axis客户端调用需要身份验证的CXF服务

    WebService是Web服务的一种标准协议,它允许不同系统之间的应用程序通过Internet进行通信。在本场景中,我们关注的是Axis客户端如何调用需要身份验证的CXF服务。Axis是一个开放源码的SOAP栈,常用于创建和部署Web...

    关于使用xfire创建webservice,并且使用消息头的示例

    这些方法将是客户端可以调用的操作。 2. **实现服务接口**:创建一个类实现定义的服务接口,提供实际的业务逻辑。 3. **配置XFire**:配置XFire,使其知道你的服务接口和实现。这通常通过XML配置文件或者注解来完成...

    【ASP.NET编程知识】Asp.net页面中调用soapheader进行验证的操作步骤.docx

    在 WebService 的 `[WebMethod]` 方法上,使用 `[SoapHeader]` 属性指定用于验证的头部名称,确保它与之前定义的属性名称一致。 ```csharp [WebService(Namespace = "http://tempuri.org/")] public class ...

    webservice开发方式,报文修改

    在处理与第三方服务的报文兼容问题时,关键在于理解报文的结构和规范,以及灵活运用各种编程工具和方法。通过封装此类功能,可以在项目中创建一个通用的报文处理类,方便地调整报文格式以满足第三方的要求,从而简化...

Global site tag (gtag.js) - Google Analytics