网络服务客户端,服务器程序

电脑杂谈  发布时间:2020-03-27 22:07:09  来源:网络整理

个人web应用调用支付宝付款_web调用客户端程序_普通类调用spring web bean对象

今年我采访了阿里,腾讯和美团之后web调用客户端程序,我发现了一个重要发现....... >>

webservice: 主要实现跨平台的web数据通信

功能: 假设有两个业务系统,一个是用C ++编写的,另一个是用Java编写的. 如果要实现两个不同业务系统之间的数据通信,则必须执行跨平台处理. 最好的连接平台. 但是,要在不同业务系统之间进行通信,必须制定出双方都认可的规则: 通信协议,Web服务正式基于简单对象服务协议,以实现不同业务系统之间的跨平台通信.

跨平台通信技术: Web服务,RMI等

网络服务服务框架: CXF / AXIS

肥皂请求标头: 简单对象访问协议: 简单对象访问协议

SOAP消息只是具有以下元素的常规XML文档:

信封(必需): 将XML文档标识为SOAP消息. 标头(可选): 包含标头信息: 通常指定消息的某些特征信息: 例如,指定自定义标签以过滤某些参数. 正文(必填): 包含所有呼叫和响应信息故障(可选): 提供有关在处理此消息时发生的错误的信息

xml名称空间指定标签元素名称空间以避免冲突,并且只能放置在指定名称空间的根元素上. 通常,名称空间的名称被指定为URI,但是为了防止命名冲突,root标记中包含的元素必须在soap的开头加上前缀,如果soap服务器接收到SOAP消息而Envelope的名称空间不是,信息将被自动丢弃

web调用客户端程序_个人web应用调用支付宝付款_普通类调用spring web bean对象

提供了一种非常灵活的组通信机制,无需事先同意就可以以分散但标准的方式扩展消息. 可以在SOAP中. 标头添加了用于实现此扩展的条目,例如身份验证,交易管理和付款. : Header元素是SOAP封装元素的第一个直接子元素. Header元素的所有直接子代都称为条目,条目的编码规则如下:

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body>
        <ns1:sayHello xmln1:ns2="http://inter.ws.zhiwei.com/">
            <arg0>china</arg0>
        </ns1:sayHello>
    </soap:Body>
</soap:Envelope>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body>
        <ns1:sayHelloResponse xmlns:ns1="http://inter.ws.zhiwei.com/">
            <return>Hello china</return>
        </ns1:sayHelloResponse>
    </soap:Body>
</soap:Envelope>

types: 指定WebService使用的所有数据类型. 上面的案例使用了两种数据类型,即int和datetime.

消息: 指示操作中使用的数据类型.

portType: 指出此WebService支持的所有操作,即哪些方法可用于调用

绑定:

soap12: 绑定元素的传输指示传输协议,这里是http协议

操作: 指定要暴露给外界的界面

The

个人web应用调用支付宝付款_web调用客户端程序_普通类调用spring web bean对象

use属性指定输入和输出的编码. 这里没有指定编码.

服务: 指定服务的一些信息,主要是指定服务的访问路径

①: 创建服务接口和服务实现类服务接口

package com.zhiwei.cxf;
import javax.jws.WebParam;
import javax.jws.WebService;
@WebService
public interface IHelloWorld {
	public String sayHello(@WebParam(name = "name") String name);
}

服务实现类:

package com.zhiwei.cxf;
import javax.jws.WebParam;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.jws.soap.SOAPBinding.Style;
@WebService  //标记该类为webservice的服务类
@SOAPBinding(style = Style.RPC)
public class HelloWorld {
	//@WebParam:类似@RequestParam:将接口接受的参数暴露
	public String sayHello(@WebParam(name = "name") String name) {
		return name + " say: Hello World ";
	}
}

②: 发布Web服务服务

package com.zhiwei.service;
import javax.xml.ws.Endpoint;
import com.zhiwei.cxf.*;
public class ServerDeploy {
	public static void deployService() {
		
		System.out.println("Server start .....");
		HelloWorld service = new HelloWorld();
		String address = "http://localhost:9000/helloWorld";
		
		//绑定webservice的地址和服务接口,并发布服务
		Endpoint.publish(address, service); 
	}
	
	public static void main(String[] args) throws InterruptedException {
		
		deployService();
		System.out.println("server ready .....");
		Thread.sleep(1000 * 600);
		System.out.println("server exit .....");
		System.exit(0);
	}
}

测试: 打开浏览器: 9000 / helloWorld? wsdl您可以查看Web服务的wsdl内容,其中详细说明了Web服务服务接口的用法.

web调用客户端程序_个人web应用调用支付宝付款_普通类调用spring web bean对象

使用JAX-WS实现对Web服务的访问JDK的“ wsimport -keep wsdl URL”自动生成CXF框架的wsdl2java工具自动生成

/**
JaxWsProxyFactoryBean:Factory for creating JAX-WS proxies 
JAX-WS:Java API for XML Web Services
功能:JAX-WS允许开发者可以选择RPC-oriented或者message-oriented 来实现自己的web services ,在JAX-WS中,一个远程调用可以转换为一个基于XML的协议例如SOAP,在使用JAX-WS过程中,开发者不需要编写任何生成和处理SOAP消息的代码。JAX-WS的运行时实现会将这些API的调用转换成为对应的SOAP消息。
*/
JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
/**
* SEI:Service Endpoint Interface,服务端接口
*/
factory.setServiceClass(IHelloWorld.class); // 指定服务端提供服务的接口
factory.setAddress("http://localhost:9000/helloWorld"); // 指定服务地址
// 指定内部故障
factory.getInFaultInterceptors().add(new LoggingInInterceptor()); 
 // 指定外部故障
factory.getOutFaultInterceptors().add(new LoggingOutInterceptor());
// 创建JAX-WS服务的代理类,代理类可以直接调用webservice中的方法
IHelloWorld service = (IHelloWorld) factory.create(); 
// 调用服务接口方法
System.out.println("[result]--->" + service.sayHello("Python")); 

客户结果:

结果表明客户端成功调用了远程Web服务服务.

wsimport: 自动生成的层次结构:

普通类调用spring web bean对象_web调用客户端程序_个人web应用调用支付宝付款

wsimport自动生成代码测试:

HelloWorldService helloWorldService = new HelloWorldService();
HelloWorld helloWorld = helloWorldService.getHelloWorldPort();
System.out.println(helloWorld.sayHello("Java"));

结果: 测试成功

命令: wsdl2java -d d: / temp -client: 9000 / helloWorld? wsdl

生成代码结构层次结构:

测试代码:

HelloWSImpService helloWSImpService=new HelloWSImpService();
		
HelloWS helloWS=helloWSImpService.getHelloWSImpPort();
String result=helloWS.sayHello("--->China!");
System.out.println(result);

结果: 测试成功

你好--->中国!!

695856371 Web网页设计师②群 |喜欢此站点的朋友可以将其添加为书签,或加入我们一起交流技术!

欢迎访问梁仲霖的个人博客网站. 该个人博客网站提供了最新的网站管理员新闻和各种Internet信息. 还提供个人博客模板web调用客户端程序,最新和最完整的Java教程,Java面试问题. 在这里,我将竭尽所能,使这个个人博客网站成为最佳网站!谢谢大家,希望大家一起进步!


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/shouji/article-154624-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...