如何使用ASP.NET AJAX访问Web Services

ASP调用WEBSERVICE文档 ASP调用WEBSERVICE----INDEX----1. soap请求方式2. post请求方式3. SHOWALLNODE函数(关于节点各属性和数据显示)---------------------一.SOAP请求示例下面是一个 SOAP 请求示例。所显示的占位符需要由实际值替换。POST /WebService1/UserSignOn.asmx HTTP/1.1Host: 192.100.1 阅读详情

使用客户端script调用ASP.NET Web services (.asmx)和Windows Communication Foundation(WCF) services(.svc).脚本引用是自动添加到页面上的,并且他们自动产生Web service proxy类,你就从这里使用客户端脚本调用Web service.

你还能访问ASP.NET Web Servicce 不使用ASP.NET AJAX 服务端控件(如,如果你使用不同的Web开发环境).这样做,在页面上你能动手包括引用Microsoft AJAX Library,引用脚本文件,并且相应自己的Web service.在运行时,ASP.NET产生代理类调用服务.

ASP.NET Web services是组件下的一个方法调用HTTP.在下面你学习怎样创建一个Web service和怎样使用客户端脚本在一个AJAX-enabled Web application中调用WebSerice.

Using Web Services in ASP.NET AJAX

其实ASP.NET AJAX使用客户端脚本调用服务,这个服务中既有自己定义的服务也有构建在应用程序服务.应用程序服务在ASP.NET AJAX 中也有所他提供,并包括authentication, roles, and profile services.

在ASP.NET Web Services也自定义创建Web Services,或Windows Communication Foundation (WCF) services (.svc services).

一、使用场景


你使用WCF和ASP.NET有下面case:

a. 如果你已经创建WCF服务,你能添加进入终端的AJAX-enabled Web pages中允许访问服务;

b. 如果你已经创建ASP.NET Web (.asmx) services,你能修改他们允许使用脚本访问同样的服务;

c. 如果你要使用ASP.NET AJAX Web pages上使用脚本访问你自己创建的自定义服务.你能像WCF service或an ASP.NET Web service样实现它;

d. 你能使用ASP.NET application构建的services去访问AJAX-enabled Web page用户的authentication, roles, and profile的信息。

三、事例


下面是如何调用ASP.NET和WCF服务.从客户端脚本调用应用程序服务是提供在其他部分.

(1)使用AJAX调用Web Service方法.

.NET Framework 授权你使用客户端浏览器异步调用ASP.NET Web services(.asmx)方法.在页面能调用基于服务端方法不需要postback和不刷新页面.因为只有数据在客户端与服务端传输.

<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html >
    <head id="Head1" runat="server">
        <style type="text/css">
            body {  font: 11pt Trebuchet MS;
                    font-color: #000000;
                    padding-top: 72px;
                    text-align: center }
            .text { font: 8pt Trebuchet MS }
        </style>
        <title>Simple Web Service</title>
            <script type="text/javascript">
            // This function calls the Web Service method.  
            function GetServerTime()
            {
                Samples.AspNet.ServerTime.GetServerTime(OnSucceeded);
            }
            // This is the callback function that
            // processes the Web Service return value.
            function OnSucceeded(result)
            {
                var RsltElem = document.getElementById("Results");
                RsltElem.innerHTML = result;
            }
        </script>
    </head>
    <body>
        <form id="Form1" runat="server">
         <asp:ScriptManager runat="server" ID="scriptManager">
                <Services>
                    <asp:ServiceReference path="ServerTime.asmx" />
                </Services>
            </asp:ScriptManager>
            <div>
                <h2>Server Time</h2>
                    <p>Calling a service that returns the current server time.</p>
                    <input id="EchoButton" type="button" 
                        value="GetTime" onclick="GetServerTime()" />
            </div>
        </form>
        <hr/>
        <div>
            <span id="Results"></span>
        </div>   
    </body>
</html>

下面是WebService

<%@ WebService Language="C#" Class="Samples.AspNet.ServerTime" %>

using System;
using System.Web;
using System.Web.Services;
using System.Xml;
using System.Web.Services.Protocols;
using System.Web.Script.Services;

namespace Samples.AspNet
{

    [WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ScriptService]
public class ServerTime : System.Web.Services.WebService
{

        [WebMethod]
public string GetServerTime()
{
return String.Format("The server time is {0}.",
DateTime.Now);

        }

    }

}

(2)从AJAX客户端产生HTTP请求  

你还能最低级别的使用客户端脚本调用Web service.如果你有管理communication layer或调查来服务端的发送数据.你就使用WebRequest类去调用Web服务.

下面是怎样使用WebRequest对象实现GET和POST Web请求连接详细指定的URLs.

// ConnectingEndPoints.js

var resultElement;

function pageLoad()
{
resultElement = $get("ResultId");
}

// This function performs a GET Web request.
function GetWebRequest()
{
alert("Performing Get Web request.");

    // Instantiate a WebRequest.
var wRequest = new Sys.Net.WebRequest();

    // Set the request URL.     
wRequest.set_url("getTarget.htm");
alert("Target Url: getTarget.htm");

    // Set the request verb.
wRequest.set_httpVerb("GET");

    // Set the request callback function.
wRequest.add_completed(OnWebRequestCompleted);

    // Clear the results area.
resultElement.innerHTML = "";

    // Execute the request.
wRequest.invoke(); 
}

// This function performs a POST Web request.
function PostWebRequest()
{
alert("Performing Post Web request.");

    // Instantiate a WebRequest.
var wRequest = new Sys.Net.WebRequest();

    // Set the request URL.     
wRequest.set_url("postTarget.aspx");
alert("Target Url: postTarget.aspx");

    // Set the request verb.
wRequest.set_httpVerb("POST");

    // Set the request handler.
wRequest.add_completed(OnWebRequestCompleted);

    // Set the body for he POST.
var requestBody =
"Message=Hello! Do you hear me?";
wRequest.set_body(requestBody);
wRequest.get_headers()["Content-Length"] =
requestBody.length;

    // Clear the results area.
resultElement.innerHTML = "";

    // Execute the request.
wRequest.invoke();             
}


// This callback function processes the
// request return values. It is called asynchronously
// by the current executor.
function OnWebRequestCompleted(executor, eventArgs)
{   
if(executor.get_responseAvailable())
{
// Clear the previous results.

       resultElement.innerHTML = "";

        // Display Web request status.
resultElement.innerHTML +=
"Status: [" + executor.get_statusCode() + " " +
executor.get_statusText() + "]" + "
";

        // Display Web request headers.
resultElement.innerHTML +=
"Headers: ";

       resultElement.innerHTML +=
executor.getAllResponseHeaders() + "
";

        // Display Web request body.
resultElement.innerHTML +=
"Body:";

      if(document.all)
resultElement.innerText +=
executor.get_responseData();
else
resultElement.textContent +=
executor.get_responseData();
}

}
if (typeof(Sys) !== "#ff0000") Sys.Application.notifyScriptLoaded();

(3)Calling WCF Service Operations in AJAX

你能使用脚本异步调用调用 Windows Communication Foundation (WCF) services (.svc).下面是怎样调用Windows Communication Foundation (WCF) services

<%@ Page Language="C#" AutoEventWireup="true"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html  >
<head runat="server">
<style type="text/css">
body {  font: 11pt Trebuchet MS;
font-color: #000000;
padding-top: 72px;
text-align: center }

        .text { font: 8pt Trebuchet MS }
</style>
<title>Simple WCF Service Page</title>

</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server">
<Services>
<asp:ServiceReference
Path="SimpleService.svc/ws"/>
</Services>
<Scripts>
<asp:ScriptReference Path="service.js" />
</Scripts>
</asp:ScriptManager>

<div>
<h2>Simple WCF Service</h2>
<input type='button' name="clickme"  value="Greetings"
onclick="javascript:OnClick()" />    
<input type='button' name="clickme2"  value="Greetings2"
onclick="javascript:OnClick2()" />
<hr/>
<div>
<span id="Results"></span>
</div>
</div>

    </form>
</body>
</html>


var ServiceProxy;

function pageLoad()
{
ServiceProxy = new ISimpleService();
ServiceProxy.set_defaultSucceededCallback(SucceededCallback);
}

function OnClick()
{
// var myService = new ISimpleService();
ServiceProxy.HelloWorld1("George");
}

function OnClick2()
{
var dc = new DataContractType();
dc.FirstName = "George";
dc.LastName = "Washington";
ServiceProxy.HelloWorld2(dc);     
}

// This is the callback function that
// processes the Web Service return value.
function SucceededCallback(result, userContext, methodName)
{
var RsltElem = document.getElementById("Results");
RsltElem.innerHTML = result + " from " + methodName + ".";
}
if (typeof(Sys) !== "undefined") Sys.Application.notifyScriptLoaded();


using System;
using System.Web;
using System.Collections;
using System.Collections.Generic;
using System.Threading;
using System.Xml;
using System.Xml.Serialization;
using System.Text;
using System.IO;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Description;
using System.ServiceModel.Dispatcher;
using System.ServiceModel.Channels;
using System.ServiceModel.Activation;

// This a WCF service which consists of a contract,
// defined below as ISimpleService, and DataContractType,
// a class which implements that interface, see SimpleService,
// and configuration entries that specify behaviors associated with
// that implementation (see <system.serviceModel> in web.config)

namespace Aspnet.Samples
{
[ServiceContract()]
public interface ISimpleService
{
[OperationContract]
string HelloWorld1(string value1);
[OperationContract]
string HelloWorld2(DataContractType dataContractValue1);
}

    [ServiceBehavior(IncludeExceptionDetailInFaults = true)]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class SimpleService : ISimpleService
{
public SimpleService()
{ }

        public string HelloWorld1(string value1)
{
return "Hello " + value1;
}
public string HelloWorld2(DataContractType dataContractValue1)
{
return "Hello " + dataContractValue1.FirstName +
" " + dataContractValue1.LastName;
}
}

    [DataContract]
public class DataContractType
{
string firstName;
string lastName;

        [DataMember]
public string FirstName
{
get { return firstName; }
set { firstName = value; }
}
[DataMember]
public string LastName
{
get { return lastName; }
set { lastName = value; }
}
}

}

二、背景


在页面上的交流使用通过一个Web service communication层,使用AJAX技术产生Web service调用.数据在客户端和服务端异步交换,特别是在JSON格式上.

(1)Client-Server Communication for AJAX Clients

在AJAX-enabled Web pages上,浏览器向服务端制造一个初始化请求,并且为数据并发异步请求Web services.客户交流的主要元素是从服务端下载proxy类和core client-script library.服务端交流的主要元素是handlers和自定义services.下面图片显示这些元素在服务端与客户端之间交流被调用的情况.

(2)AJAX Client Architecture

浏览器被使用proxy类调用Web service方法.一个proxy(代理)类是在服务端自动产生的并且在页面加载时下载到浏览器.这个代理类提供一个客户端对象呈现暴露一个Web serice的方法.

调用一个Web service方法,客户端脚本调用相应的代理类方法.而且调用是异步的,是通过XMLHTTP对象.

Web service communication layer包括允许代理类产生服务调用的脚本类型库.

在代理服务类里面的代码和在核心Web Service交流层隐藏XMLHTTP的复杂性和不同浏览器的复杂性.简化客户端脚本调用Web service.

(1)使用HTTP POST verb调用Web services.一个POST请求已经有一个包括浏览器发送到服务端的数据的主体.它没有大小的限制.因此,当数据大小超过一个GET 请求的大小时候你仍然能使用POST请求.在客户端serializes请求进入JSON格式并且发送像POST数据样的到服务端.服务端deserializesJSON数据进入.NET Framework类型并制造真正的Web service调用.在这个期间响应,服务端serializes或返回值和并返回到客户端,在客户端通过deserializes他们成为JavaScript objects.

(2)使用HTTP GET verb调用Web services.类似一个POST请求的功能.

a:这个cilent使用一个查询字符串发送到参数到服务端.

b:一个GET请求能一次只能调用调用一个Web service方法要使用ScriptMethodAttribute attribute标记一下.

c:数据大小被限制就在于浏览允许URL的长度上.

下面是显示ASP.NET AJAX client 架构:

客户端架构包括在library里面的Web service communication layer和为服务下载到页面上的代理类.下面是单个元素的详细介绍:

a. Custom Service Proxy Classes:这些由服务端自动产生并下载到客户端脚本组成的.代理类为在页面上使用WCF和ASMX中提供一个对象(那是,他们在ScriptManager control 的ServiceReferences中为每一个项提供元素).

b. Authentication Proxy Class.Authentication Proxy Class由服务端的authentication 应用程序服务产生.它允许用户登陆或注销通过JavaScript做这件事情不需要往返服务器端.

c. Role Proxy Class:RoleService proxy Class是由server roles application service产生.它允许你分组用户和将用户分组成一个单元,通过JavaScript做这件事情不需要往返服务器端.这能使用在授权或拒绝访问服务端资源.

d. Profile Proxy Class:ProfileService Class.是由server ProfileService application service产生.它允许你当前用户的资料信息到达客户端通过JavaScript做这件事情不需要往返服务器端.

e. Page Methods Proxy Class:为在ASP.NET页面上客户端脚本调用静态方法提供底层架构.如果他们是Web service方法.

f. Web Service Communication Layer.这是一个库包括客户端脚本类型.这些类型允许浏览器与服务器端使用服务交流.他们还保护客户端应用程序设置的复杂性.和维护客户端和服务端的异步交流.他们封装浏览器提供异步兼容的XMLHTTP对象.并且授权使用得客户端应用程序不受浏览器的约束.下面主要Web service communication layer元素.

(1)WebRequest: 提供客户端功能产生一个Web ruquest.

(2)WebRequestManager: 这个是使用关联执行对象的WebRequest object管理Web requests 发行的流程.

(3)XmlHttpExecutor:使用浏览器的XMLHTTP制造一个异步网络请求.

(4)JSON Serialization:这是serializes JavaScript objects成为JSON格式.使用JavaScript eval function就能Deserialization.

(5)XML Serialization:Web service communication layer支持XML serialization 对SOAP请求 Web services和从一个JSON请求一个Web service返回XML类型.

 

构建先进的ASP.NET CRM系统:项目与技术详解 CRM(Customer Relationship Management,客户关系管理)系统是一种旨在优化企业与客户之间互动的管理理念和一套信息技术解决方案。它通过自动化流程和技术来收集客户数据,并分析这些数据,以帮助企业改进与客户的沟通,提高销售效率,优化服务质量。CRM系统的关键职能包括客户信息管理、销售管理、市场营销管理、服务支持与分析决策等。ASP.NET是微软公司开发的一个用于构建Web应用程序的开放源代码服务器端Web应用程序框架。 阅读详情

相关推荐

基于stm32开发的红外循迹小车

2.L298N电机驱动模块:分别是5V,12V,GND,可以通过外加电源给驱动模块供电,IN1,IN2,IN3,IN4,EN1,EN2,通过给IN口不同的电平,可以达到控制电机正反转,EN口为使能口,可以通过给EN口不同的PWM波,来达到控制小车速度,1.红外循迹模块:检测黑线的原理是向外发射红外线,当没有遇到黑线的时候,返回回来,之后返回高电平,当遇到黑线的时候,红外被吸收,返回高电平,读取相应IO口的电平就可以知道小车此时的大致位置;模块有四个输入接口,分别连接四个TT马达,驱动小车运动;

2301_81374681的博客 1万+

ASP.NET WebService+Ajax调用

default.aspx 代码如下: @ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> DOCTYPE html> html xmlns="http://www.w3.org/1999/xhtml"> head runat="server"> me

ASP.NET 2133

Python读取ECMWF grib数据;Anaconda配置eccodes和cfgrib环境及安装过程

python读取grib数据,eccodes,cfgrib安装。

qq_36714629的博客 2244

ASP.Net Ajax应用初步:使用AJAX调用WebService

 1、首先是使用VS.Net2005创建一个 ASP.Net AJAX-Enabled Web Application2、创建一个WebService:Service1.asmxnamespace AJAX1{    ///      /// Service 的摘要说明     ///      [System.Web.Services.WebService(N

北亮的专栏 1041

[PayPal报错]为遵守国际法规,这笔交易已被拒绝。

PayPal报错解决:为遵守国际法规,这笔交易已被拒绝。

qq_39906413的博客 1万+

ubuntu安装英伟达显卡驱动后wifi消失解决方法

ubuntu安装英伟达显卡驱动后(比如4090和3090等),会把wifi和蓝牙驱动去除,导致wifi无法连接。需要重新下载驱动安装。

人工智能(AI)技术,大模型技术,深度学习,机器学习,计算机视觉,AI工具实践应用等分享 3903

ASP.NET AJAX中Webservice调用方法示例

   ASP.NET 2.0 AJAX中能够在客户端js中很方便地调用服务器Webservice,以下为一些调用的示例。笔者安装的ASP.NET 2.0 AJAX   版本为AJAX November CTP。   三个示例分别为:   1 带参数的WS方法   2 不带参数的WS方法   3 参数类型为DataTable的WS方法   一、WebMethod  注意要点:   1 WebMeth

电子商务 asp.net ajax 991

qcc51xx如何配置spdif输入

qcc51xx如何配置spdif输入。

Alex_886的博客 1375

如何使用ASP.NET AJAX访问Web Services/WCF Services

Web Services 使用客户端script调用ASP.NET Web services (.asmx)和Windows Communication Foundation(WCF) services(.svc).脚本引用是自动添加到页面上的,并且他们自动产生Web service proxy类,你就从这里使用客户端脚本调用Web service. 你还能访问ASP.N...

denghuaken9487的博客 171

用一张分析型 CDS Query 看清争议案件新增与结案节奏:C_OpenClosedDisputeCase 深度解读

应收账款争议管理中的关键CDS视图分析 摘要:C_OpenClosedDisputeCase是SAP系统中用于监控应收账款争议案件的重要CDS视图,提供三个时间窗口(当日、近5天、当月)的新增与结案数据。该视图通过"创建vs解决"的净变化指标,帮助财务团队实时掌握争议管理趋势,特别适用于多币种跨国企业的现金流管理。其核心价值在于将争议管理从被动"救火"转变为可量化运营,通过统一汇率换算和关键日期参数,为管理层提供标准化的运营仪表盘。视图采用特权访问模式,需通过上层应用

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 122

SST专题(2-2)MMC-SST 输入级的工作原理及数学模型

本文研究了MMC-SST和iMMC-SST的电路结构及工作原理。系统由前级MMC电路和后级DC/DC电路组成,MMC负责电能转换和能量存储,DC/DC电路进行电压电流调节。重点分析了半桥型子模块(SM)的开关组态和工作原理,建立了平均值模型,推导了上下桥臂电压方程和环流特性。研究表明,通过合理控制子模块充放电模态可维持端口电压平衡,上下桥臂电压调控可影响网侧功率吸收,而环流特性对中压直流侧电压具有重要影响。

嵌入式老牛的博客 773

Understanding ASP.NET AJAX Web Services

Calling Web Services with ASP.NET AJAXDan WahlinWeb Services are an integral part of the .NET framework that provide a cross-platform solution for exchanging data between distributed systems. Alth

SatSun工作室 1637

flowable工作流看这一篇就够了(基础篇)

接下来我们构建一个非常简单的请假流程,Flowable引擎需要流程定义为BPMN 2.0格式,这是一个业界广泛接受的XML标准。在Flowable术语中,我们将其称为一个流程定义(process definition)。一个流程定义可以启动多个流程实例(process instance)。流程定义可以看做是重复执行流程的蓝图。在这个例子中,流程定义定义了请假的各个步骤,而一个流程实例对应某个雇员提出的一个请假申请。

qq_38196449的博客 2万+

ASP.NET AJAX中的异步Web Services调用

     在ASP.NET AJAX当中,除了通过UpdatePanel机制来建立具有AJAX功能的Web应用程序外,其实传统(较为典型)的做法是利用Web Services的概念,来实现网页上异步调用的工作。    这也是整个ASP.NET AJAX架构的基础,以及UpdatePanel控件的根本原理。    当然,因为通过这样的方式,您必须自行建立一些JavaScript代码,所以

dotnetWalker的专栏 5861

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

ASP.NET 2.0当中的Call back技术与ASP.NET AJAX

前面介绍过了几个ASP.NET当中的AJAX机制之后,不知道读者是否偶而也有一些confuse,原因是有太多种方法可以在.aspx网页上进行AJAX动作了,目前最常见的几种方式是:1) 传统的HTTP request(要自己写一些JavaScript code)2) asp.net 2.0当中的Call Back技术(ASP.NET 2.0当中原生支持,不需要安装任何套件)3)安装ASP.NE

dotnetWalker的专栏 2835

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Asp.net使用ajax调用后台方法

Ajax调用的前提(以aspx文件为例:) 首先需要在aspx文件后台中引用using System.Web.Services; 需要调用的方法必须是公共的(public)、静态的(static);如果不是会提示“500 Internal Server Error 问题”,代表找不到method。 方法定义需要加入[WebMethod]的声明 前端jquery 引用jquery文件(在所有js前引用) Ajax的格式: $.ajax({ url: "Default.aspx/Get

Zhanc的博客 1071

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

ASP.NET AJAX 学习之一 ScriptManager控件

 主要内容1.控件概述2.一个简单的示例3.客户端脚本模式4.错误处理5.Services属性6.Scripts属性 一.控件概述ScriptManager控件包括在ASP.NET 2.0 AJAX Extensions中,它用来处理页面上的所有组件以及页面局部更新,生成相关的客户端代理脚本以便能够在JavaScript中访问Web Service,所有需要

CHENMH的专栏 1888

ASP.NET AJAX调用Web Service

ASP.NET AJAX调用Web Service原文发布日期:2007.02.08作者:Bipin Joshi翻译:webabcd介绍尽管AJAX是种客户端技术,但实际上的开发过程,它经常要调用一个服务器端的过程。通常,网站上的数据是存放在一个关系型数据库中,为了让AJAX更有用处,处理服务器端数据需要一种简单可靠的方法。幸运的是,ASP.NET AJAX提供了一种有效的基础架构来做这件事情

kaigood的专栏 1064

基于ASP.NET AJAX 实现 client js call back web services ,return dataset or datatable...

MS的ASP.NET AJAX 是一个很好的构架, 这个DEMO主要是展试了如何用JSON,由于有Microsot.Web.Preview.dll的支持. 对于从WEB SERVER 上返回DataSet ,DataTable ,DataRow.将变的很简单, 以下是实现的步骤. 1.先下载 Microsot.Web.Preview.dll 2.在WEB conf...

129

wcf ajax,Creating WCF AJAX Services without ASP.NET

Creating WCF AJAX Services without ASP.NET03/30/20172 minutes to readIn this articleWindows Communication Foundation (WCF) AJAX services can be accessed from any JavaScript-enabled Web page, without r...

weixin_29533233的博客 242

WCF REST Configuration for ASP.NET AJAX and plain REST Services

该文请参考http://www.west-wind.com/WebLog/posts/310747.aspx If you've been thinking about using ASP.NET Ajax in combination with WCF, life got a lot easier with .NET 3.5 and the new REST support. The webHttp binding along with the ASP.NET AJAX specific version

陈希章@中国 555
上一篇: RSS是什么
下一篇: ASP.NET+Web服务实现软件共享
Caesar525
博客等级 码龄19年 11粉丝 73原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值