Java调用doNet webService方法

doNet的webService

浏览器访问测试地址:http://192.168.4.17/JLWWS/sendCommand.asmx,出现

点击getDeviceValue方法,出现

上图的xml代码再贴一遍:
POST /JLWWS/sendCommand.asmx HTTP/1.1
Host: 192.168.4.17
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://tempuri.org/getDeviceValue"

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <getDeviceValue xmlns="http://tempuri.org/">
      <n>int</n>
      <s>string</s>
    </getDeviceValue>
  </soap:Body>
</soap:Envelope>
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <getDeviceValueResponse xmlns="http://tempuri.org/">
      <getDeviceValueResult>string</getDeviceValueResult>
    </getDeviceValueResponse>
  </soap:Body>
</soap:Envelope>
然后

java方法:
public String cc(){
          String result = "";
          try{
           Service service = new Service();
           Call call = (Call) service.createCall();
           call.setOperationName(new QName("http://tempuri.org/", "getDeviceValue"));
           call.addParameter(new QName("http://tempuri.org/", "n"), org.apache.axis.encoding.XMLType.XSD_INT, javax.xml.rpc.ParameterMode.IN);
           call.addParameter(new QName("http://tempuri.org/", "s"), org.apache.axis.encoding.XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN);
           call.setTargetEndpointAddress(new URL("http://192.168.4.17/JLWWS/sendCommand.asmx"));
           call.setUseSOAPAction(true);
           call.setSOAPActionURI("http://tempuri.org/getDeviceValue");

           //SOAPService soap = new SOAPService();
           //soap.setName("sendCommand1");
           //call.setSOAPService(soap);
           result  = (String) call.invoke(new Object[] { "1", "aaaaaaaaa"});
           System.out.println(result);
          }catch(Exception e){
           e.printStackTrace();
          }

          return result;
    }

注意上述代码的红色部分。第一、命名空间注意不要写错了;第二、参数如果是int类型的话,设置值的时候用String的方式入参,(addParameter的时候还是要org.apache.axis.encoding.XMLType.XSD_INT)。

参考csdn论坛上有个帖子是这么说的:

错误信息如下:
AxisFault
 faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Client
 faultSubcode: 
 faultString: 服务器无法读取请求。 ---&gt; XML 文档(1, 582)中有错误。 ---&gt; 输入字符串的格式不正确。

==================

虽然xml中是
<soap:Body>
    <PubClientLogin xmlns="http://NewCap.com/NewCapecWebService/">
      <appid>int</appid>
    </PubClientLogin>
 </soap:Body>
但是传入参数要输入string类型,
call.addParameter(new QName(targetNameSpace, "appid"), XMLType.XSD_INT, ParameterMode.IN);
call.invoke(new Object[]{"43"})

帖子地址:http://bbs.csdn.net/topics/360243982

Java调用doNet webService方法

时间: 2024-10-24 15:25:17

Java调用doNet webService方法的相关文章

Java调用JavaFX的方法

Java调用JavaFX的方法.这三种方法分别为: 1. 用ScriptEngineManager类.这是基于JSR-223规范的java脚本API( scripting API).可以在java程序中运行一些脚本,如 JavaFX script, javascript等.2. 通过JavaFX reflection API.这是JavaFX提供的反射API,几乎可以调用所有的JavaFX类.3. 先用JavaFX类实现一个Java的interface,然后Java程序可以通过这个interfa

调用具体webservice方法时时报错误:请求因 HTTP 状态 503 失败: Service Temporarily Unavailable

添加web引用会在相应项目的app.cofig文件中产生如下代码: <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >            <section n

JAVA调用.NET WebService终极方案(包含对SoapHeader的处理)

一.前言: 今日部门的产品需要用到短信功能,需要走公司统一的接口,而该短信接口是由.net开发的,利用两天时间彻底搞定了用java来调用.net 的web service,包括对soap header的处理. 二.解决方案 查询了下java中对soap的支持,有几种方案,有axis和xfire等,我这里先选择的是axis的1.4版本,随即开始开发,这里面有个大坑啊.就是java对类的属性中的getXXXX方法解析后生成的xml文件的属性首字母是小写的,与.NET的生成的xml对不上,光这个问题耗

java调用restful webservice(转)

一般来说,大家只会用到GET和POST方法来调用. GET方法的话,参数可以写在url里面. 比如说server的interface用的是@RequestParam或者@PathVariable,在客户端调用的时候,都可以直接写在URL里,具体写法我就不写了,和下面差不多. POST方法.这个有点不一样,参数要写在request 的body里面,而不是URL里面. URL = url = new URL(http://test.webservice.api/test); HttpURLConne

java调用CXF WebService接口的两种方式

通过http://localhost:7002/card/services/HelloWorld?wsdl访问到xml如下,说明接口写对了. 2.静态调用 // 创建WebService客户端代理工厂        JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();        // 判断是否抛出异常        factory.getOutInterceptors().add(new LoggingInIntercept

Axis2 java调用.net webservice接口的问题(郑州就维)

[html] view plaincopy 这是一个古老的问题,古老到从我若干年前遇到这样的问题就是一个解决之道:反复尝试.其实标准是什么,标准就是一个束缚,一种按既定规则的束缚,错点点,你的调用就可能不成功,不成功后你要花费大量的力气查找原因和错误,差异很多帖子,查找相似的地方,Webservice的实现不同,Soap,CXF,Axis等,每种工具都有指定的方式,刚开始尝试Soap发现这个根本没合适的包进行调用,也是IBM比较老的jar,2001年写的比较复杂,我对比较复杂的东西向来不感兴趣,

java 调用.net webservice

JAVA代码如下: static void testTextString() { try { String methodSayTo = "test"; // 定义服务 Service service = new Service(); Call call2 = (Call) service.createCall(); call2.setTargetEndpointAddress(new java.net.URL("http://localhost:21972/Service1.

关于java调用对象,方法的注意事项

特别注意在调用时应带上小括号,(),切记.非常重要. Person p = new Person; p.age =25; p.speak; 错误一:第一行,new对象时没带小括号: 错误二:第三行,调用方法时,没带小括号.

java调用(axis2)WebService传递对象类型参数(源码)

温馨提示:axis2 jar包哟 public static String pubRemoteFuc() {                String endpoint = "http://cnblogs.com/qgc/xxxx/Service?wsdl";        String result = "error";        Service service = new Service();        Call call; //参数对象