webservice客户端asmx[通俗易懂]

webservice客户端asmx[通俗易懂]记录一次webservice接口访问服务端一般会给个以http://xxx/services.asmx。以前都是wsdl做服务端,采用idea自带的工具生成客户端或者用wsdl2java工具生成。从网上找了好多方法,最后终于成功了。服务端的URL:asmx的请求与响应代码:<!–请求–>POST/webService/services/webServiceImplService.asmxHTTP/1.1Host:172.16.1.20Content-Ty

大家好,又见面了,我是你们的朋友全栈君。

记录一次webservice接口访问服务端一般会给个以http://xxx/services.asmx。

以前都是wsdl做服务端,采用idea自带的工具生成客户端或者用wsdl2java工具生成。

从网上找了好多方法,最后终于成功了。

服务端的URL:

webservice客户端asmx[通俗易懂]

asmx的请求与响应代码:

<!--请求-->
POST /webService/services/webServiceImplService.asmx HTTP/1.1
Host: 172.16.1.20
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://webService/services/webServiceImplService/SendInfo"

<?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>
    <SendInfo xmlns="http://webService/services/webServiceImplService">
      <Data>string</Data>
    </SendInfo>
  </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>
    <SendInfoResponse xmlns="http://webService/services/webServiceImplService">
      <SendInfoResult>string</SendInfoResult>
    </SendInfoResponse>
  </soap:Body>
</soap:Envelope>

方法一

asmx也可以用wsdl2java工具生成。就在http://xxx/services.asmx后加?wsdl即可。生成方式可百度,有很多。如果这么简单我就不会写这篇文章了/哭

我这个服务端地址里面包含了很多方法。其中有参数是重复的,导致用wsdl2java工具生成时一直报某某字段重复。我从网上找了个asmx文件是可以用wsdl2java生成的。所以这个方法是没法用的。

方法二     

直接使用org.apache.axis.client.ServiceCall。代码如下:

public static void main(String[] args) throws Exception {
    String url = "http://ip:port/webService/services/webServiceImplService.asmx";
    //这里有个坑,一定要注意最后是否有反斜线!!!
    String namespace = "http://webService/services/webServiceImplService";
    //action路径(方法名)
    String actionUri = "SendInfo";
    //方法名
    String op = "SendInfo";

    Service service = new Service();
	Call call = (Call) service.createCall();
	call.setTargetEndpointAddress(new URL(url));
	call.setUseSOAPAction(true);
    // 在创建QName对象时,QName类的构造方法的第一个参数表示WSDL文件的命名空间名,也就是<wsdl:definitions>元素的targetNamespace属性值
	call.setSOAPActionURI(namespace +"/"+actionUri);
	call.setReturnType(XMLType.XSD_STRING);
	call.setOperationName(new QName(namespace, op)); // 设置要调用哪个方法
	call.addParameter(new QName(namespace,"Data"), // 设置要传递的参数(形参)
	XMLType.XSD_STRING, ParameterMode.IN);

    String json = "传递的数据";
    Object[] params = new Object[]{json};
    String response = "";
    try {
			response = (String) call.invoke(params);// 调用方法并传递参数
		}catch (Exception e){
			e.printStackTrace();
			//输出SOAP发送的请求报文
			System.out.println("--SOAP Request: " +     call.getMessageContext().getRequestMessage().getSOAPPartAsString());
		}
}

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/130385.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 中缀表达式转后缀表达式的方法,步骤和原理及后缀表达式运算方式

    中缀表达式转后缀表达式的方法,步骤和原理及后缀表达式运算方式中缀转后缀本文大部分资料参考慕课何钦铭老师的数据结构相关的慕课链接:表达式求值中缀表达式是最常用的算术表达式,运算符在运算数中间,运算需要考虑运算符优先级.后缀表达式是计算机容易运算的表达式,运算符在运算数后面,从左到右进行运算,无需考虑优先级,运算呈线性结构.先举个简单的转换例子2+9/3-5(前缀)->293/+5-(后缀)先进行乘除再进行加减运算规律,…

    2022年6月16日
    28
  • 第十二届蓝桥杯模拟赛Python组(第一期)

    第十二届蓝桥杯模拟赛Python组(第一期)

    2021年4月19日
    201
  • 函数调用堆栈 涉及汇编(转)

    函数调用堆栈 涉及汇编(转)

    2021年9月1日
    38
  • vue 集成高德地图进行批量标注和信息窗体展示

    vue 集成高德地图进行批量标注和信息窗体展示                                   vue集成高德地图进行批量标注和信息窗体展示         高德地图进行地理位置的标注和信息窗体展示是我们很常用的一个功能,其实高德api里面已经清楚的说明怎么用了,但是自己总结一下记录在自己的笔记里,也是有些许好处的。高德api样列展示地址是:https://lbs.amap.com/api/javascript…

    2022年5月21日
    66
  • 3DCNN论文阅读

    3DCNN论文阅读3DCNN应用范围:视频动作识别、医疗图像诊断、高光谱图像(HSI)分类等

    2022年6月3日
    39
  • 1040. 有几个PAT(25)- PAT乙级真题

    1040. 有几个PAT(25)- PAT乙级真题1040.有几个PAT(25)字符串APPAPT中包含了两个单词“PAT”,其中第一个PAT是第2位(P),第4位(A),第6位(T);第二个PAT是第3位(P),第4位(A),第6位(T)。现给定字符串,问一共可以形成多少个PAT?输入格式:输入只有一行,包含一个字符串,长度不超过105,只包含P、A、T三种字母。输出格式:在一行中输出给定字符串中包含多少个PAT。由于结果可能比较大,只输出对…

    2022年5月1日
    45

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号