WebService WSDL详解(上)

WSDL详解(示例复制粘贴篇):什么是WSDL?WSDL的作用?WSDL文件如何生成?如何将WSDL文件生成java代码并且调用? WSDL是为描述Web服务发布的XML格式。W3C组织(World Wide Web Consortium)没有批准1.1版的WSDL,当前的WSDL版本是2.0,是W3C的推荐标准(recommendation)(一种官方标准),并将被W3C组织批准为正式标准。WSDL描述Web服务的公共接口。这是一个基于XML的关于如何与Web服务通讯和使用的服务描述;也就是描述与目录中列出的Web服务进行交互时需要绑定的协议和信息格式。 阅读详情

最近公司从德国拿来个项目,是用C++写的。我觉得挺有意思,想想说到C++那还是大一大二时学的,大三后就基本没用过。由于我参加了这个项目组,所以就拿着C++的书恶补。但看到要我们维护和增强的代码才知道,德国人真是什么都搞,一个项目里啥技术都有C/C++,java,.net,smalltalk。再看我被分配的任务webservice interface和一个provider,拿到代码文件src/com/.......,我就笑了,原来又是熟门熟路的java。只是webservice使用的是比较老的axis1.4。原本写webservice都是用cxf的,用起来比较简单所以对webservice没有怎么深入理解。乘这次项目的机会我就恶补下,下面是我整理的一些资料,主要针对WSDL,因为只要有WSDL,那些Client和Server端的代码很容易生成。

 

为什么使用WSDL?

像Internet协议之类的标准有没有为权威所利用,或者人们这样看待它是因为顺之所获的好处远远超出了代价?曾经有许多试图建立的标准都流产了。有时候,那些还没有普遍使用的标准甚至由法令或政府规定强行推出:Ada语言就是一例。 我相信正是跟随标准所带来的好处使它广泛接受。例如,对于铁路服务来说,真正重要的是,不同公司所铺设的铁路结合到一起,或者是来自好几个公司的产品协调的工作在一起。几家大的企业合力建立了SOAP标准。Web Service描述语言(WSDL)向这种Web Service的提供商和用户推出了方便的协调工作的方法,使我们能更容易的获得SOAP的种种好处。几家公司的铁道并在一起不算什么难事,他们所需遵循的只是两轨间的标准距离。对Web Service来说,这要复杂得多。我们必须先制定出指定接口的标准格式。 曾经有人说SOAP并不真需要什么接口描述语言。如果SOAP是交流纯内容的标准,那就需要一种语言来描述内容。SOAP消息确实带有某些类型信息,因此SOAP允许动态的决定类型。但不知道一个函数的函数名、参数的个数和各自类型,怎么可能去调用这个函数呢?没有WSDL,我可以从必备文档中确定调用语法,或者检查消息。随便何种方法,都必须有人参与,这个过程可能会有错。而使用了WSDL,我就可以通过这种跨平台和跨语言的方法使Web Service代理的产生自动化。就像COM和CORBA的IDL文件,WSDL文件由客户和服务器约定。 注意由于WSDL设计成可以绑定除SOAP以外的其他协议,这里我们主要关注WSDL在HTTP上和SOAP的关系。同样,由于SOAP目前主要用来调用远程的过程和函数,WSDL支持SOAP传输的文档规范。WSDL 1.1已经作为记录递交给W3C(见http://www.w3.org/TR/wsdl.html) WSDL文档结构

 

WSDL文档结构
若要理解XML 文档,将之看作块状图表非常有用。下图以XML 的文档形式说明了
WSDL 的结构,它揭示了WSDL 文档五个栏之间的关系。
WSDL 文档可以分为两部分。顶部分由抽象定义组成,而底部分则由具体描述组成。
抽象部分以独立于平台和语言的方式定义SOAP 消息,它们并不包含任何随机器或语
言而变的元素。这就定义了一系列服务,截然不同的网站都可以实现。随网站而异的东
西如序列化便归入底部分,因为它包含具体的定义。
l 抽象定义
Types
独立与机器和语言的类型定义
Messages
包括函数参数(输入与输出分开)或文档描述
PortTypes
引用消息部分中消息定义来描述函数签名(操作名、输入参数、输出参数)
2 具体定义
Bindings
PortTypes 部分的每一操作在此绑定实现
Services
确定每一绑定的端口地址
下面的图中,箭头连接符代表文档不同栏之间的关系。点和箭头代表了引用或使用
关系。双箭头代表"修改"关系。3-D 的箭头代表了包含关系。这样,各Messages 栏使
用Types 栏的定义,PortTypes 栏使用Messages 栏的定义;Bindings 栏引用了
PortTypes 栏,Services 栏引用Bindings 栏,PortTypes 和Bindings 栏包含了operation
元素,而Services 栏包含了port 元素。PortTypes 栏里的operation 元素由Bindings
栏里的operation 元素进一步修改或描述。


在此背景中,我将使用标准的XML 术语来描述WSDL 文档。Element 是指XML
的元素,而"attribute"指元素的属性。于是:
<element attribute="attribute-value">contents</element>
内容也可能由一个或多个元素以递归的方式组成。根元素是所有元素之中最高级的

元素。子元素总是从属于另一个元素,父元素。 注意,文档之中可能只有一个Types栏,或根本没有。所有其他的栏可以只有零元素、单元素或是多元素。WSDL的列表要求所有的栏以固定的顺序出现:import, types, message, portType, binding, service。所有的抽象可以是单独存在于别的文件中,也可以从主文档中导入。

 

WSDL文件示例
让我们来研究一下WSDL文件,看看它的结构,以及如何工作。请注意这是一个非常简单的WSDL文档实例。我们的意图只是说明它最显著的特征。以下的内容中包括更加详细的讨论。

以下是该实例文档的总述:稍后我将详细讨论每一部分的细节。 第一行申明该文档是XML。尽管这并不是必需的,但它有助于XML解析器决定是否解析WSDL文件或只是报错。第二行是WSDL文档的根元素:<definitions>。一些属性附属于根元素,就像<schema>子元素对于<types>元素。 <types>元素包含了Types栏。如果没有需要声明的数据类型,这栏可以缺省。在WSDL范例中,没有应用程序特定的types声明,但我仍然使用了Types栏,只是为了声明schema namespaces。 <message>元素包含了Messages栏。如果我们把操作看作函数,<message>元素定义了那个函数的参数。<message>元素中的每个<part>子元素都和某个参数相符。输入参数在<message>元素中定义,与输出参数相隔离--输出参数有自己的<message>元素。兼作输入、输出的参数在输入输出的<message>元素中有它们相应的<part>元素。输出<message>元素以"Response"结尾,就像以前所用的"fooResponse"。每个<part>元素都有名字和类型属性,就像函数的参数有参数名和参数类型。 用于交换文档时,WSDL允许使用<message>元素来描述交换的文档。 <part>元素的类型可以是XSD基类型,也可以是SOAP定义类型(soapenc)、WSDL定义类型(wsdl)或是Types栏定义的类型。 一个PortTypes栏中,可以有零个、单个或多个<portType>元素。由于抽象PortType定义可以放置在分开的文件中,在某个WSDL文件中没有<portType>元素是可能的。上面的例子里只是用了一个<portType>元素。而一个<portType>元素可在<operation>元素中定义一个或是多个操作。示例仅使用了一个名为"foo"的<operation>元素。这和某个函数名相同。<operation>元素可以有一个、两个、三个子元素:<input>, <output> 和<fault>元素。每个<input>和<output>元素中的消息都引用Message栏中的相关的<message>元素。这样,示例中的整个<portType>元素就和以下的java函数等效:
int foo(int arg);
这个例子足见XML和java相比要冗长的多。(包括<message>元素,XML在示例中共使用了12行代码来表达相同的单行函数声明。) Bindings栏可以有零个、一个或者多个<binding>元素。它的意图是制定每个<operation>通过网络调用和回应。Services栏同样可以有零个、一个、多个<service>元素。它还包含了<port>元素,每个<port>元素引用一个Bindings栏里的<binding>元素。Bindings和Services栏都包含WSDL文档。

 

Namespace

 <definitions>和子节点<schema>都是namespace属性:
<definitions name="FooSample" targetNamespace="http://tempuri.org/wsdl/" xmlns:wsdlns="http://tempuri.org/wsdl/" xmlns:typens="http://tempuri.org/xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:stk="http://schemas.microsoft.com/soap-toolkit/wsdl-extension" xmlns="http://schemas.xmlsoap.org/wsdl/"> <types> <schema targetNamespace="http://tempuri.org/xsd" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" elementFormDefault="qualified" > </schema> </types>
每个namespace属性都声明了一个缩略语,用在文档中。例如"xmlns:xsd"就为http://www.w3.org/2001/XMLSchema定义了一个缩略语(xsd)。这就允许对该namespace的引用只需简单的在名字前加上前缀就可以了,如:"xsd:int"中的"xsd"就是合法的类型名。普通范围规则可运用于缩略前缀。也就是说,前缀所定义的元素只在元素中有效。 Namespace派什么用?namespace的作用是要避免命名冲突。如果我建立一项Web Service,其中的WSDL文件包含一个名为"foo"的元素,而你想要使用我的服务与另一项服务连接作为补充,这样的话另一项服务的WSDL文件就不能包含名为"foo"的元素。两个服务器程序只有在它们在两个事例中表示完全相同的东西时,才可以取相同的名字。如果有了表示区别的namespace,我的网络服务里的"foo"就可以表示完全不同于另一个网络服务里"foo"的含义。在你的客户端里,你只要加以限制就可以引用我的"foo"。 见下例:http://www.infotects.com/fooService#foo 就是完全限制的名字,相当于
"carlos:foo",如果我声明了carlos作为http://www.infotects.com/fooService的快捷方式。请注意namespace中的URL是用来确定它们的唯一性的,同时也便于定位。URL所指向的地方不必是实际存在的网络地址,也可以使用GUID来代替或补充URL。例如,GUID"335DB901-D44A-11D4-A96E-0080AD76435D"就是一个合法的namespace指派。 targetNamespace属性声明了一个namespace,元素中所有的声明的名字都列于其内。在WSDL示例中,<definitions>的targetNamespace 是http://tempuri.org/wsdl。这意味着所有在WSDL文档中声明的名字都属于这个namespace。<schema>元素有自己的targetNamespace属性,其值为 http://tempuri.org/xsd ,在<schma>元素中定义的所有名字都属于这个namespace而不是main的target namespace。 <schema>元素的以下这行声明了默认的namespace。Schema中所有有效的名字都属于这个namespace。
xmlns="http://www.w3.org/2001/XMLSchema"

 

 SOAP消息

对于使用WSDL的客户机和服务机来说,研究WSDL文件的一种方法就是决定什么来接受所发送的信息。尽管SOAP使用底层协议,如IP和HTTP等,但应用程序决定了服务器与客户机之间交互的高级协议。也就是说,进行一项操作,比如"echoint"把输入的整数送回,参数的数目、每个参数的类型、以及参数如何传送等因素决定了应用程序特定的协议。有很多方法可以确定此类协议,但我相信最好的方法就是使用WSDL。如果我们用这种视角来看待它,WSDL不只是一种接口协议,而且是一种协议特定的语言。它就是我们超越"固定"协议(IP、HTTP等)所需要的应用程序特定协议。 WSDL可以确定SOAP消息是否遵从RPC或文档风格。RPC风格的消息(就是示例中所用的)看起来像是函数调用。而文档风格的消息则更普通,嵌套层次更小。下面的XML消息就是示例WSDL文件解析后的发送/接受效果,解析使用的是MS SOAP Toolkit 2.0(MSTK2)中的SoapClient对象。 从客户端调用"foo(5131953)"函数:

两函数都调用了消息,其回应是有效的XML。SOAP消息由几部分组成,首先是<Envelop>元素,包含一个可选的<Header>元素以及至少一个<body>元素。Rpc函数所调用的消息体有一个根据操作"foo"命名的元素,而回应信息体有一个"fooResponse"元素。Foo元素有一个部分<arg>,就和WSDL中描述的一样,是单参数的。fooResponse也相应的有一个<result>的部分。注意encodingStyle、envelope和message的namespace和WSDL Bindings栏中的预定义的一致

 

 

通过WSDL调用WebService服务的两种方法 还是jdk的问题,我在测试类里可以运行成功,但是放到src下报这个错误,网上搜的让添加JVM启动参数,我没试过,放弃了这个方法,去用第二种方法了。到目的路径下拿到代码包,放到你的工程里,它提供了这个wsdl所有的方法,并且会有一个例子(我第一次解析下来的时候没有例子,第二次就有了,可以多试几次),每一个方法都会有一个实例。2.如果你的jdk版本低,可以使用jdk自带的WSDL解析工具,但我的是JDK17,已经移除了,下载使用CXF,我这里下载的是apache-cxf-3.6.4。然后加上请求头,发送消息。 阅读详情

相关推荐

Myeclipse调用webservice总结【利用WSDL】

      最近学习MyEclipse、workshop方面的知识,重点是关于webservice方面的。      经过大概2周的学习、实践,有点小收获。 一、MyEclipse利用网上公开发布WSDL文件,创建WebService Client,进行调用WebService;       网上找的WSDL测试例子wdlurl:http://www.webxml.com.cn

demon_evil的专栏 2万+

互联网 免费的WebService接口

股票行情数据 WEB 服务(支持香港、深圳、上海基金、债券和股票;支持多股票同时查询) Endpoint: http://webservice.webxml.com.cn/WebServices/StockInfoWS.asmx 复制 Endpoint Disco: http://webservice.webxml.com.cn/WebServices/StockInfoWS.asmx?dis...

topMan'blog 911

Axios调用WSDL进行Webservice请求

说明:Axios2发送wsdl的webservice请求时,参数名默认是arg0、arg1、、、,不知道如何修改,所以改用了Axios1 package com.utils; import com.pojo.RequestParam; import org.apache.axis.client.Call; import org.apache.axis.client.Service; imp...

weixin_39102174的博客 5018

接口测试之(二)WebService 之 WSDL文件 讲解

WebService 之 WSDL文件 讲解 恩,我想说的是,是不是经常有人在开发的时候,特别是和第三方有接口的时候,走的是SOAP协议,然后用户给你一个WSDL文件,说按照上面的进行适配,嘿嘿,这个时候,要是你以前没有开发过,肯定会傻眼,那如果你想学习的话,就认真的看下面的讲解咯: 一、WSDL概述 WebServices Description Language (...

ths512的博客 3244

【WebService笔记03】WebService接口开发之WSDL文档

WSDL,英文全称是:Web Services Description Language,中文含义是:网页服务描述语言,WSDL是就是一个用于描述WebService接口出入参等报文信息的。WSDL是由W3C组织统一规定的一个WebService接口描述文档规范,所有的WebService接口都是符合WSDL文档规范的。为什么需要WSDL描述文档呢???通过前两篇文章的学习,我们学会了如何使用JWS和CXF两种方式实现WebService接口的发布和调用,文章地址:【

✅ Java 开发工程师 2554

数据中心——Vxlan基本概念1

东西流量指的就是横向流量-------例如:服务器与服务器之间交换流量南北流量指的就是纵向流量-------例如:客户端和服务器之间的流量以下主要是讲解业务平面的网络架构(一般业务平面就需要用到专用的数据中心交换机)

m0_49864110的博客 1万+

WSDL(Web服务描述语言)详细解析

     WSDL (Web Services Description Language,Web服务描述语言)是一种XML Application,他将Web服务描述定义为一组服务访问点,客户端可以通过这些服务访问点对包含面向文档信息或面向过程调用的服务进行访问(类似远程过程调用)。WSDL首先对访问的操作和访问时使用的请求/响应消息进行抽象描述,然后将其绑定到具体的传输协议和消息格式上以最终

juxtapose的专栏 4017

数据资产可视化分析:PowerBI在大数据管理中的实战

目的:帮你搞懂“为什么数据资产需要可视化?”“PowerBI能帮企业解决什么问题?”,并掌握用PowerBI做大数据可视化的实战技巧。范围:覆盖数据资产定义、可视化分析原理、PowerBI核心功能(数据连接、建模、可视化)、零售企业实战案例,以及未来趋势与挑战。背景:为什么企业的数据像乱堆的玩具?核心概念:数据资产、可视化分析、PowerBI分别是什么?它们怎么配合?实战步骤:用PowerBI帮零售企业整理“销售玩具箱”,做出能指导决策的仪表盘;应用场景:不同部门怎么用这个“整理好的玩具箱”?

2501_92132293的博客 906

关于Webservice Web引用报错:缺少 soap:operation 绑定的解决

问题:     手上有个项目,需要使用另一个开发小组开发的WEBSERVICE接口,该接口使用JAVA开发。开发小组提供WEBSERVICE URL后,我通过VS 2010导入WEB引用时发生以下错误:     错误: 无法从命名空间“http://xxx”导入绑定“DefaultBinding”。            - 无法导入操作“QueryInfo”。            

conanhhy的专栏 4373

Android SELinux——neverallow问题处理(十六)

遇到 neverallow 规则问题,千万别急着去注释/剔除里面原有的规则(原生的尽量别动)。增加 allow 规则是常见的解决办法,但是随着 android 版本的升级,系统对 SELinux 的管控越来越严,增加了大量的 neverallow。一般情况下,向默认标签授予权限的做法是错误的,其中许多权限都是 neverallow 规则所不允许的。按照上面方法去添加 SELinux 可能会违反了 neverallow 规则,编译时候会报 neverallow 相关的错误。

小旭的专栏 2654

四足机器人关节电机控制器实现(附C++代码)

本文先对做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章提示:以下是本篇文章正文内容。

qq_35635374的博客 461

WebService中的WSDL详解

WebService中的WSDL详解       有人在WebService开发的时候,特别是和第三方有接口的时候,走的是SOAP协议,然后用户(或后台)给你一个WSDL文件(或网址),说按照上面的进行适配, 这时就要对WebService的WSDL有一定的理解,本文将对WSDL(WebService描述语言)进行详细总结。        WSDL (Web Services Descriptio

wenzhi的博客 3万+

网络发生环路了,别慌,这些步骤一定要安排起来!

网络环路是指在计算机网络中,数据包因为某种原因在多个网络设备之间不断循环,形成了一个闭环。这样数据包就永远也无法到达目标,导致网络的流量滞留,设备间的资源耗尽,最终网络性能受到严重影响。网络环路虽然是常见的网络故障,但只要掌握正确的排查和解决方法,面对环路问题时,你就能冷静应对,迅速恢复网络的正常运行。希望这篇文章能帮助你更好地理解和处理网络环路的问题,让你的网络环境更加稳定可靠!🚀📡如果你有任何疑问,或者在实际操作中遇到困难,随时可以联系我,我们一起攻克技术难题!

网络技术联盟站 1962

WebService中的WSDL详细解析

WebService中的WSDL详解 有人在WebService开发的时候,特别是和第三方有接口的时候,走的是SOAP协议,然后用户(或后台)给你一个WSDL文件(或网址),说按照上面的进行适配, 这时就要对WebService的WSDL有一定的理解,本文将对WSDL(WebService描述语言)进行详细总结。 WSDL (Web Services Descrip...

孤独地搬砖的博客 9万+

Android14 Qcom 从Framework到Driver带你连接WIFI(一)

前面已经讲完了WIFI打开的流程,那么通过UI这时候是可以选择需要连接的网络进行连接。从这里开始我们看连接的流程。

IAYLBL的博客 695

AI编码规则:从提示工程到自动化,提升大模型生成代码质量

在软件工程领域,代码质量是保障软件可维护性、安全性和团队协作效率的核心。其背后遵循着从基础语法规范到架构设计原则的一系列工程实践。随着大语言模型(LLM)在代码生成任务中的广泛应用,如何确保AI生成的代码符合这些工程标准,成为一个关键的技术挑战。这涉及到将人类工程师积累的最佳实践,转化为机器可理解、可执行的明确约束。通过系统化的**编码规则**定义与集成,例如构建涵盖安全、风格、架构的多层次规则集,并将其融入**提示工程**或自动化工作流,可以显著引导AI产出更健壮、规范的代码。这种方法的价值在于,它能将模

weixin_42525189的博客 641

WebService的wsdl详解

webservice服务的wsdl内容详解,以及如何根据其内容编写调用代码

onePlus5T的博客 1578

【STK】手把手教你利用STK进行仿真-STK软件简介02 STK专业分析模块

STK/Astrogator是一个交互式轨道机动和深空探测计划工具,用于飞行器运行及任务分析,通过定义推力模型、目标星历、飞行器姿态,提供轨道机动的解决及优化方案。应用Astrogator分析轨道机动的可见性和地面站覆盖,用户可以快速、方便地进行全局分析。任务控制序列保存在STK场景中,用于任务运行、快速制定精确轨道机动方案。为在轨运行的飞行器制定或执行机动计划时,分析人员可以根据飞行过程数据,如发动机定标参数、实际初始轨道,计算出推进器点火和点火时机数据,用于发出指令及精炼机动计划。

weixin_44184852的博客 1863

Webservice、WSDL三种服务访问的方式

https://www.cnblogs.com/zhaoxd07/p/4843661.html http://www.cnblogs.com/yongfeng/archive/2013/01/30/2883146.html 用soapUI试了下wsdl的测试,但还是不知道webService和WSDL的具体对应意义,找了篇文档了解下,原url见上。 一 WebService WebServ...

z69183787的专栏 6159

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

webservice之wsdl

WSDL 简介 WSDL是Web Service的描述语言,是一种接口定义语言,用于描述Web Service的接口信息等。 WSDL文档可以分为两部分。顶部分由抽象定义组成,而底部分则由具体描述组成 WSDL 历史 在 2001 年 3 月,WSDL 1.1 被 IBM、微软作为一个W3C纪录(W3C note)提交到有关XML协议的 W3C XML 活动,用于描述网络服务。(W3C

孤独症有所好转 1155

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

通过IDEA对WSDL进行WebService生成客户端代码

参考文献:https://blog.csdn.net/vfsdfdsf/article/details/80426276 1、WSDL详解 这个文档是花50分下载的,希望有所帮助。了解WSDL中需要使用到的参数。 可以参考下这篇文章来了解:https://blog.csdn.net/wenzhi20102321/article/details/68486526 <?xml version='1.0' encoding='UTF-8'?> <!--这里的name是发布的servic

GinChou的萌新博客 1万+

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Axis2 WebService WSDL

访问WEBSERVICE服务:http://localhost:8080/.../.../.../createFtpFileIndexService?wsdl返回信息如下:This XML file does not appear to have any style information associated with it. The document tree is shown below.

软件架构师之路 3145

WebService WSDL

1、http://localhost:9001/Service/ServiceHello?wsdl 地址栏中的地址 【Service为固定的 】【ServiceHello为项目的名称】 【?wsdl为固定的页面】 进入wdsl页面,看到该XML内容则说明发布成功!

见贤思齐焉 见不贤而内自省也 716

c#通过 wsdl调用Webservice 源码

1. 将网上查找的C# 通过WSDL调用WEBSERVICE代码整理如下:     ///       /// WebServiceProxy 的摘要说明       ///       [WebService(Namespace = "http://tempuri.org/")]     [WebServiceBinding(ConformsTo = WsiProfiles.Bas

chengjunlin0793的专栏 9310

java WebService接口调用WSDL详细解析

0、前言 有人在WebService开发的时候,特别是和第三方有接口的时候,走的是SOAP协议,然后用户(或后台)给你一个WSDL文件(或网址),说按照上面的进行适配, 这时就要对WebService的WSDL有一定的理解,本文将对WSDL(WebService描述语言)进行详细总结。 1、WSDL的基本概念 WSDL是一个用于精确描述Web服务的文档,WSDL文档是一个遵循WSDL-XML模式的...

文文的博客 8966
上一篇: DLL编写教程
下一篇: WebService WSDL详解(下)
terryzero
博客等级 码龄19年 700粉丝 232原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值