java webservice 根据wsdl文件生成客户端代码;webservice可视化测试工具SOAPUI;乱码。

IDEA根据wsdl生成java代码(Generate Java Code from WSDL)以及乱码问题的解决 乱码是因为文件编码不一致,Win10默认字符编码为936(GBK),导致IDEA根据wsdl生成的java文件编码为GBK,而如果IDEA设置了全局/项目编码为UTF-8,这时打开文件就会乱码。可修改IDEA配置,单独将乱码文件配置为GBK也能解决乱码问题,但是文件太多时很不方便。可借助EmEditor文本编辑器统一将所有选中的GBK文件转为UTF-8。 阅读详情

前言

本文主要介绍通过wsdl文件生成java客户端代码以及webservice的可视化测试工具SoapUI;以及解决遇到的乱码问题。

背景

最近要对接HIS系统,对方提供的接口是webservice(这种技术,有点古老),提供了wsdl文件,我方需要根据wsdl文件生成java代码,intellij idea生成webservice客户端代码支持的不是很好,研究得知,可通过wsimport命令来生成,

  • wsimport 根据wsdl文件生成java代码;
  • wsgen 根据endpoint implementation class生成必要的文件,包括但不限于wsdl文件。

这两个命令在%JAVA_HOME%\bin下。

根据wsdl生成java代码

wsimport -encoding utf8 -p 包名 -wsdllocation http://somedomain/some/path/some.wsdl  wsdl文件路径
  • -encoding,指定生成的java文件的编码
  • -p,指定生成的java包名
  • -wsdllocation,指定生成的java中wsdl的路径
  • wsdl文件路径,通常会将wsdl保存为本地文件

注意的点

@WebServiceClient的类

生成后的文件,先找到一个注解有javax.xml.ws.WebServiceClient的类,这个类对应着wsdl文件中的service元素;

<definitions name=""
  xmlns="http://schemas.xmlsoap.org/wsdl/">
  
<service name="service_name">
</service>

上述xml使用了默认namespace,如果写全,则是

<wsdl:definitions  xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" >

<wsdl:service name="service_name">
</wsdl:service>

以下同理,不再赘述。
这个类通常指定了wsdl的位置及namespaceURI,

import javax.xml.ws.Service;

/**
 * 
 *  通常会有如下注释以表明是自动生成
 * This class was generated by the JAX-WS RI.
 * JAX-WS RI 2.2.9-b130926.1035
 * Generated source version: 2.2
 *
 */
@WebServiceClient(name = "SomeService", targetNamespace = "http://some.domain", wsdlLocation = "http://domain.com/path/some.wsdl")
public class SomeService
    extends Service
{

    private final static URL PREFIX_WSDL_LOCATION;

    static {
        URL url = null;
        WebServiceException e = null;
        try {
          //这里是WSDL文件的地址,真正的通信地址在soap:address元素的location属性中
            url = new URL("http://domain.com/path/some.wsdl");
        } catch (MalformedURLException ex) {
            e = new WebServiceException(ex);
        }
        PREFIX_WSDL_LOCATION= url;
    }
   }

@WebService的类

找到注解有 javax.jws.WebService的类,这个类对应着wsdl文件中的portType元素。

<portType name="SomePortType">
 <operation name="operation_name">
    <documentation>Service definition of function ns__operation_name</documentation>
    <input message="输入参数"/>
    <output message="输出参数"/>
  </operation>
</portType>

这个类中通常会定义了很多方法,

@WebService(name = "SomePortType", targetNamespace = "http://some.domain")
@XmlSeeAlso({
    com.package.ObjectFactory.class
})
public interface SomePortType {


    @WebMethod(operationName = "someOperation")
    @WebResult(name = "someResult", targetNamespace = "")
   //省略
    public String someOperation(
        @WebParam(name = "输入参数1", targetNamespace = "")
        String someInput,
        @WebParam(name = "输入参数2", targetNamespace = "")
        String someInput2);

ObjectFactory

还有一个ObjectFactory类,但

import javax.xml.bind.annotation.XmlRegistry;
@XmlRegistry
public class ObjectFactory {}

基本用法

 注解有WebServiceClient的类 someService = new 注解有WebServiceClient的类;
 final SomePortType  somePortType = someService.getSome();
 final String 输出参数 = somePortType.目标方法(输入参数)

好用的SOAP ui测试工具

我们先直观的感受下wsdl文件,wsdl文件用来描述一个webservice提供了哪些服务;比如天气webservice,http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl,浏览器中打开如下
在这里插入图片描述
最重要的是wsdl:service节点,提供了4个端口,2个webservice(SoapUI中创建SOAP project可以看到)、2个http的(SoapUI中创建rest project可以看到)。soap:address元素中的location属性才是真正的服务地址。

<wsdl:service name="WeatherWebService">
	<wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">.....</wsdl:documentation>
	<wsdl:port name="WeatherWebServiceSoap" binding="tns:WeatherWebServiceSoap">
		<soap:address location="http://www.webxml.com.cn/WebServices/WeatherWebService.asmx"/>
	</wsdl:port>
	<wsdl:port name="WeatherWebServiceSoap12" binding="tns:WeatherWebServiceSoap12">
		<soap12:address location="http://www.webxml.com.cn/WebServices/WeatherWebService.asmx"/>
	</wsdl:port>
	<wsdl:port name="WeatherWebServiceHttpGet" binding="tns:WeatherWebServiceHttpGet">
		<http:address location="http://www.webxml.com.cn/WebServices/WeatherWebService.asmx"/>
	</wsdl:port>
	<wsdl:port name="WeatherWebServiceHttpPost" binding="tns:WeatherWebServiceHttpPost">
		<http:address location="http://www.webxml.com.cn/WebServices/WeatherWebService.asmx"/>
	</wsdl:port>
</wsdl:service>

就像postman是http的ui客户端,SoapUI是web service的ui客户端,用来测试非常方便,注意下载开源版。
在这里插入图片描述
新建SOAP project,输入wsdl地址,http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl,
在这里插入图片描述
点击绿色左右箭头,能看到定义服务的URI和SOAP版本等信息,WeatherWebServiceSoap是SOAP 1.1版本,WeatherWebServiceSoap12是SOAP 1.2版本。
在这里插入图片描述

双击Request 1,点击绿色箭头就可以执行了,右侧是执行结果。
在这里插入图片描述

webservice仍然是使用的http来通信的,只是发送的内容遵循SOAP格式要求,这一点可通过http log查看。
在这里插入图片描述
http的请求体,请求体都封装在Envelope元素内,包含header和body两部分;

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="http://WebXml.com.cn/">
   <soapenv:Header/>
   <soapenv:Body>
      <web:getSupportCity>
         <!--Optional:-->
         <web:byProvinceName>?</web:byProvinceName>
      </web:getSupportCity>
   </soapenv:Body>
</soapenv:Envelope>

http响应体,响应也是封装在Envelope元素内,包含header和body两部分;

<?xml version="1.0" encoding="utf-8"?>
<soap:envelope
	xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:xsd="http://www.w3.org/2001/XMLSchema">
	<soap:body>
		<getsupportcityresponse
			xmlns="http://WebXml.com.cn/">
			<getsupportcityresult>
				<string>........</string>
			</getsupportcityresult>
		</getsupportcityresponse>
	</soap:body>
</soap:envelope>

问题

在用java调用ASP.Net提供的webservice时,遇到了中文全部乱码、英文字母和数字正常的问题,可能是我方在处理响应时,使用的ISO_8859_1解码的字节流,因为ISO_8859_1只有字母、数字,没有汉字,符合中文全部乱码、英文字母和数字正常这个现象;将已经乱码的字符串使用ISO_8859_1编码为乱码前的字节流,然后再使用UTF_8解码就好了。从中可以推断,接收到的字节流是utf8编码的,只是在字节流转字符串时使用了错误的编码解码导致了乱码。

import java.nio.charset.StandardCharsets;

/**
     * webservice 返回的编码是iso-8859-1,需要转换成utf-8
     * @param str
     * @return
     */
    private static String convertEncode(String str){
        return new String(str.getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8);
    }

在解决上述问题时,看到了汉字奇数位乱码相关的帖子,经参考最后一个奇数汉字出现乱码解决方案、关于Java奇数最后一个字符输出乱码问题,懂了问题产生的原因

final byte[] utf8s = "你好啊".getBytes("utf8");
final String gbk = new String(utf8s, "gbk");
System.out.println(gbk);
final byte[] gbks = gbk.getBytes("gbk");
for (byte utf8 : utf8s) {
     //输出十六进制
    System.out.printf("%02X ", utf8);
}
System.out.println();
for (byte gbkEle : gbks) {
    System.out.printf("%02X ", gbkEle);
}
System.out.println()
System.out.print(new String(gbks, "utf8"));

最后一个字节发生变化,变为3F

浣犲ソ鍟�
E4 BD A0 E5 A5 BD E5 95 8A 
E4 BD A0 E5 A5 BD E5 95 3F 
你好�?

当“你好啊”替换为“一二三”时,结果如下,第3个字节变为3F

涓�浜屼笁
E4 B8 80 E4 BA 8C E4 B8 89 
E4 B8 3F E4 BA 8C E4 B8 89 
�?二三

也就是说,utf8字节流以gbk(通常将2个字节作为一个汉字处理)解码为字符串时,因为编解码差异会导致有些字符找不到,然后就会被替换为问号(ascii字符集的3F),字节流已经发生变化,再以utf8解码时(utf8中,通常3个字节当作1个汉字处理),就产生了乱码。

总结

参考过java对接webservice接口的4种方式总结,个人觉得还是使用wsimport生成java客户端的方式比较简单,不需要添加依赖,而且是面向java编程;使用httpclient发送SOAP消息体倒是简单直接,就是需要拼接xml有点繁琐。

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服务进行交互时需要绑定的协议和信息格式。 阅读详情

相关推荐

SoapUI WebService接口模拟实战:五大核心错误场景深度解析与根治方案

在软件测试与接口联调领域,WebService作为基于SOAP协议的核心技术,其测试与模拟是保障系统间可靠通信的关键环节。其原理依赖于WSDL(Web Services Description Language)定义服务契约,通过XML格式进行数据交换,确保跨平台、跨语言的互操作性。掌握WebService测试工具,对于提升接口质量、加速联调进程具有重要技术价值,尤其在金融、电商等对数据一致性要求极高的应用场景中不可或缺。本文聚焦于使用SoapUI进行WebService接口模拟时,针对WSDL导入失败、请

weixin_33767813的博客 380

Java webservice 客户端代码(四种方式)

webservice

Brave_heart4pzj的博客 5970

接口测试工具选型指南:从Postman到15款替代工具的全面对比

接口测试是API开发与质量保障的基石,而工具选型往往决定了测试效率的上限。从基础的接口调试到复杂的自动化回归、性能压测与团队协作,不同阶段对工具的能力要求截然不同。Postman虽是最流行的调试工具,但在自动化、压测及契约Mock等场景下存在天然短板。理解接口测试的分层逻辑——调试、回归、压测、治理,是做出正确选型的前提。本文梳理了15款主流通用工具,涵盖Apifox、JMeter、Karate、Gatling等,分别对应日常调试、编辑器流派、自动化测试、性能压测与平台化协作五个方向,并结合数据驱动、断言设

weixin_34082789的博客 483

webservice通过wsdl生成客户端代码的几种实现方式

网上的一个 wsdl可以根据这个案例去测试代码生成 <?xml version='1.0' encoding='UTF-8'?><wsdl:definitions name="HelloWorldService" targetNamespace="http://test.demo1/" xmlns:ns1="http://schemas.xmlsoap.org/soap/http" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xml

Mike的博客 1万+

网页的wsdl怎么用SoapUI请求和生成java客户端代码来调用

打开webservice的wsdl地址:http://127.0.0.1:89/services/WorkflowService?这是配置了CXF的目录,否则生成代码时报错:cxf diretory must be set in global。下载CXF:http://cxf.apache.org/download.html。这个参数是为了解决java类冲突。

hello world 4399

使用WSDL生成Java工程:简单实现Web服务开发

通过使用WSDL,我们可以生成Java工程,以便轻松地与Web服务进行交互。通过遵循上述步骤,你可以轻松地生成Java代码,并使用它与Web服务进行通信。首先,我们需要获取Web服务的WSDL文件。在你的Java代码中,你可以创建一个代表Web服务的客户端对象。Apache CXF是一个开源的Web服务框架,提供了用于生成Java客户端代码的工具。一旦生成了Java代码,你就可以将其导入到你的项目中,并使用它与Web服务进行交互。通过以上步骤,你就可以使用WSDL生成的Java代码与Web服务进行交互了。

DevProZ的博客 944

泛微ecology9 HRM WebService接口同步实战:组织架构与人员信息一体化集成指南

组织架构与人员数据是企业信息化系统的地基,OA、ERP、财务、BI等业务系统都依赖一套准确、及时的主数据。当EHR系统与OA系统各自维护一套人员信息时,数据不一致与重复录入成为常态。WebService接口作为一种成熟的SOAP协议集成方式,为跨系统主数据同步提供了标准化通道。泛微ecology9提供的HRM WebService接口,专门面向部门、岗位、人员等组织核心对象的增删改查,能够实现从EHR源头系统到OA平台的数据自动同步,保障流程审批、权限控制、门户展示等场景的数据一致性。本文从接口设计原理出发

weixin_34101784的博客 533

基于Landsat-8数据的山西省吕梁市地表温度反演研究过程(大气校正法)

1.数据下载:本实验采用的数据是 ①从地理空间数据云下载的来自landsat8 卫星,云量<=1%,时间为2017年5月12日的山西省吕梁市影像数据。为全面覆盖吕梁市,选用了两片影像。 ②吕梁市边界矢量图 2.数据预处理 ...

weixin_45747376的博客 6597

泛微ecology9 HRM WebService组织架构与人员信息同步实战解析

企业信息化建设中,EHR系统与OA系统之间的组织架构与人员信息不一致是常见痛点。通过WebService接口实现系统间数据联动,是替代手工导入的有效方案。泛微ecology9提供的HRM WebService接口,封装了部门创建、人员新增更新、状态变更等核心业务逻辑,能够安全高效地完成组织数据同步。理解SOAP调用原理、字段映射及权限配置,对保障同步正确性至关重要。这类接口广泛应用于员工入职、调岗、离职等场景,可结合定时任务或页面按钮触发。本文基于真实项目,梳理了利用泛微ecology9 HRM WebSe

ciya3282的博客 338

AltiumDesigner 09安装过程破解问题 .

首先分享一下破解文件,网上总是下载不到,好不容易下载到了,放在网盘上,有需要的自取。AltiumDesigner 09破解文件。链接:https://pan.baidu.com/s/1ZGvbR_6T51hpcaFbQiMX5w 密码:qwvaAltiumDesigner 09安装安装文件,比较大,包含破解文件:链接:https://pan.baidu.com/s/1mfgragB519jpGfR...

xiaoxiao_rabbit的博客 3万+

系统磁盘从MBR格式转换成GPT格式来升级win11

之前的《》中说到,需要把磁盘格式转化为MBR格式才能执行下去。问题是,win10升级win11要求启动方式为UEFI的话,磁盘格式不能为MBR。其实不升级也不影响啥,但是就是想好看点。所以花了点时间折腾了一下。我这是双系统,所以直接去A系统修复B系统的磁盘格式和引导。

qq_42520962的博客 9032

接口测试工具选型:15款主流工具对比与Postman替代指南

接口测试是软件质量保障体系中的重要环节,随着微服务架构普及,API的调试、协作、自动化回归和性能压测需求日益复杂。文章从接口调试工具的基本概念出发,剖析了Postman在团队协作、自动化能力及资源占用等方面的局限性,系统对比了Insomnia、Hoppscotch、Bruno、Apifox、JMeter、Karate等15款主流工具的能力边界与适用场景。通过分析各工具在协议支持、断言机制、CI/CD集成、团队协作模式上的差异,给出了按团队规模与业务场景进行选型的务实路径,并提供了从Postman迁移的注意点

weixin_34387468的博客 184

072、LLC谐振变换器的谐振电容选型

文章摘要: 本文深入探讨了LLC谐振变换器中谐振电容的选型要点。作者通过实际案例指出,谐振电容的高频特性(如ESR、ESL)会显著影响LLC性能,导致死区振铃或EMI问题。对比薄膜电容(稳定性好但体积大)和MLCC(体积小但存在直流偏置与温漂缺陷),建议100W以上优先选薄膜电容。强调需关注容值精度、耐压、纹波电流及布局对称性,避免寄生参数引发谐振异常。最后提出验证方法(热成像与波形观测)及选型清单,并分享经验:薄膜电容可靠性更优,MLCC需严格测试,布局时应缩短走线以降低环路辐射。

Jack010169的博客 223

根据WSDL文件生成JAVA客户端代码

wsimport是一个Java命令行工具,用于从WSDL(Web Service Definition Language)生成Java客户端代码。它是一个Java Web服务开发的重要工具,因为它可以自动处理与Web服务交互的复杂性。打开java JDK目录我们会看到有一个wsimport.exe工具,这是由sun为我们免费提供的的。我们在IDEA中建立一个工程,将这个生成的目录拷贝到src目录下,然后我们就可以开始编写使用客户端代码。接下来,使用wsimport工具生成Java客户端代码。

大家一起学习! 2712

【深度学习新浪潮】李飞飞团队VAGEN框架深度解析:让VLM智能体学会“三思而后行“

VAGEN框架的真正价值,不仅在于性能指标的突破,更在于重新定义了VLM智能体的发展方向——人工智能的进步不应只追求"做得对",更要实现"想得清"。李飞飞团队通过强制显式思考、动态表示适配和精细化奖励三大创新,让智能体第一次具备了可解释的世界建模能力。正如人类通过"观察-预测-行动"认识世界,VAGEN为AI注入的这种思考范式,或许正是通往通用人工智能的关键一步。对于开发者而言,开源的VAGEN框架不仅提供了强大的工具,更揭示了一个重要理念:让AI学会思考,比让它学会执行更重要。

专注:太空算力、AI infra、异构调度、大模型成本工程 277

OpenCloudOS9操作系统搭建Confluence8.2.1+Jira企业级WIKI

Atlassian Confluence是一个专业的企业知识管理与协同软件,可用于构建企业wiki

背锅神童的博客 1015

通过Visual Studio自带工具根据wsdl文档自动生成WebService客户端代码及服务端代码方法

命令”框中填写wsdl.exe所在路径,Win7一般为“C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools\wsdl.exe”;“参数”框中填写生成语言(/l:cs)、命名空间(/n:MPMS.Srv.WebService)、wsdl文档路径、xsd文档路径;上一步添加完之后会在工具菜单下显示该外部工具,点击该工具,在弹出的窗口中修改参数或直接确定即可在项目指定的文件夹下生成代理类;1、打开VS,工具》外部工具。...

yinshengchen的博客 6660

YOLO26涨点改进 | Conv篇/小目标改进 | AAAI 2025 FBRT-YOLO 两个轻量级FCM和MKP模块, 助力无人机航拍任务VisDrone、UAVDT和AI-TOD高效涨点

本文提出FBRT-YOLO26模型,通过引入两个轻量级模块FCM和MKP优化航拍图像检测性能。FCM模块通过特征互补映射解决小目标信息丢失问题,MKP模块利用多尺度卷积核增强目标感知能力。在VisDrone等数据集上的实验表明,该方法在精度和速度上均优于现有实时检测器。文章详细介绍了模块结构、核心代码实现及YAML配置文件修改方法,为航拍图像中的小目标检测提供了高效解决方案。该模型实现了检测精度与效率的良好平衡,具有实际应用价值。

Ai缝合怪、助力小伙伴高效发论文 363

通过WSDL生成客户端代码

目录 1.WSDL2Java:Building stubs,skeletons,and data types from WSDL. 1 1.1示例... 1 1.2测试... 4 1.2.1异常:没有定义com.pan.model.User的序列化的实现... 5 1.3WSDL与生成的客户端代码结构分析... 5 1.3.1Types. 6 1.3.2Holders.

我有一个梦想 2万+

《从理念到落地:Claude Code 在真实项目中的深度实践指南》基于 Anthropic 团队内部使用经验的扩展与深度解读,一篇面向工程团队的全面实践手册

Claude Code 支持通过# 创建新的 API 端点根据以下输入创建完整的 API 端点:资源名称:$ARGUMENTS请创建以下文件:1. `src/routes/{resource}.routes.ts` - 路由定义2. `src/controllers/{resource}.controller.ts` - 控制器3. `src/services/{resource}.service.ts` - 服务层。

AI天才研究院 471

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

WebService客户端代码的生成

2.同步,有返回值。当服务端路径不换,只换环境(prd、test、dev)时,客户端代码需要再次生成一遍,因为生成的代码有部分魔法值写死在代码中,所以要重新生成。2.选中项目名,点击Tools,选中webservice,之后选中Generate Java Code From Wsdl。当服务端接口路径不换,只换环境(prd、test、dev)时,客户端代码不需要重新生成,只切环境即可。2.4选择wsdl的文件路径,调至develop,点击finish。3.指定文件路径,指定生成的代码位置,选择生成的模式。

m0_46509482的博客 1899

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

【Java愚公】wsdl生成java代码

新建maven项目,在pom.xml里添加CXF cxf-codegen-plugin插件,即可生成客户端代码。

qq_38362283的博客 4135

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

wsdl生成客户端调用代码

wsdl生成客户端调用代码

weixin_46990454的博客 805

webService生成java客户端代码踩坑(省流版)

Web Service也称为web服务,它是一种跨编程语言和操作系统平台的远程调用技术。Web Service采用标准的SOAP协议传输(SOAP:Simple Object Access Protocol简单对象访问协议,soap属于w3c标准。并且soap协议是基于http的应用层协议传输xml数据)。Web Service采用WSDL作为描述语言,也就是Web Service 的使用说明书。

qq_42797527的博客 983

WebService 根据 wsdl 文件生成 Java 代理类方式汇总

目录 wsimport 简介 wsimport 使用示例 服务端 客户端 调用测试 wsimport 简介 1、Java JDK 的 bin文件夹下有一个 wsimport.exe 工具,可依据 wsdl 文件生成相应的类文件,将生成好的类文件拷贝到需要使用的项目中,就可以像调用本地的类一样调用 webService 提供的方法。 2、wsimport.exe 工具可以用于非 Ja...

蚩尤后裔-汪茂雄 1万+

Java调用wsdl的webservice接口

Java调用wsdl的webservice接口

m0_49790240的博客 2万+
上一篇: springboot 图形验证码 前后端分离解决方案 easy-captcha
下一篇: 最近(2024.08.14-2024.08.25 )面试感悟
wangjun5159
博客等级 码龄17年 602粉丝 506原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值