Httpreqest

None.gif             System.Text.StringBuilder html  =   new  System.Text.StringBuilder( 2000 );
None.gif
None.gif            
string  Url = " http://pub.*****.com/special/paihang.dat " ;
None.gif            Request1
= (HttpWebRequest)WebRequest.Create(Url);
None.gif            Response1
= (HttpWebResponse) Request1.GetResponse();
None.gif
None.gif            
None.gif            Stream stream 
=  ((HttpWebResponse)Request1.GetResponse()).GetResponseStream();
None.gif
None.gif            Result 
=   new  StreamReader(stream,System.Text.Encoding.GetEncoding( " GB2312 " )).ReadToEnd();
None.gif            
None.gif            
string [] aa =  Result.Split( ' \n ' );
None.gif            
string [] a  =   new   string [ 4 ];
None.gif



None.gif public   static   string  SendHttpSoapRequest (  string  soapMessage , int  timeOutSec,IACT_API api )
ExpandedBlockStart.gifContractedBlock.gif        
dot.gif {
InBlock.gif            
//是否不要用SSL,true表示不用ssl
InBlock.gif
            bool isByPassSSL = false;
InBlock.gif            
if ( api == IACT_API.IACT_HotelGenAvail || api == IACT_API.IACT_HotelDetAvail || api == IACT_API.IACT_Ping || api == IACT_API.IACT_HotelRateCalendar )
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                isByPassSSL 
= true;
ExpandedSubBlockEnd.gif            }

InBlock.gif            
InBlock.gif            
if  ( !isByPassSSL )
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                ServicePointManager.CertificatePolicy 
= new TrustAllCertificatePolicy();
ExpandedSubBlockEnd.gif            }

InBlock.gif
InBlock.gif            String Result 
= "";
InBlock.gif        
InBlock.gif            StreamWriter myWriter 
= null;
InBlock.gif    
InBlock.gif            
//原始的代码
InBlock.gif
            HttpWebRequest objRequest = (HttpWebRequest)WebRequest.Create(HttpRequestSender.BuildURL ( api,isByPassSSL));
InBlock.gif            
InBlock.gif            objRequest.Method 
= "POST";
InBlock.gif            objRequest.ContentType 
= "text/xml";
InBlock.gif            objRequest.UserAgent 
= "Mozilla/4.0 (compatible; MSIE 6.0b; Windows NT 5.1)";
InBlock.gif            objRequest.Headers.Add(
"SOAPAction","\"\"");
InBlock.gif            
//请求中设置压缩
InBlock.gif
            objRequest.Headers.Add( "Accept-Encoding","parameter to gzip");
InBlock.gif            objRequest.Timeout 
= timeOutSec * 1000;
InBlock.gif    
InBlock.gif            
try
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                myWriter 
= new StreamWriter(objRequest.GetRequestStream());
InBlock.gif                myWriter.Write(soapMessage);
ExpandedSubBlockEnd.gif            }

InBlock.gif            
catch (Exception e) 
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                
throw ( e );
ExpandedSubBlockEnd.gif            }

InBlock.gif            
finally 
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                
if(myWriter!=null)
ExpandedSubBlockStart.gifContractedSubBlock.gif                
dot.gif{
InBlock.gif                    myWriter.Close();
ExpandedSubBlockEnd.gif                }

ExpandedSubBlockEnd.gif            }

InBlock.gif        
InBlock.gif            HttpWebResponse objResponse 
= (HttpWebResponse)objRequest.GetResponse();
InBlock.gif            
ContractedSubBlock.gifExpandedSubBlockStart.gif            
gzip时解压#region gzip时解压
InBlock.gif            
//判断是否是gzip的压缩格式
InBlock.gif
            if ( objResponse.Headers["Content-Encoding"== "gzip" )
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                Stream GzipStream 
= new GZipInputStream (objResponse.GetResponseStream() );
InBlock.gif                MemoryStream UnZipStream 
= new MemoryStream();
InBlock.gif
InBlock.gif                
int size = 2048;
InBlock.gif                
InBlock.gif                
byte [] writeData = new byte[size];
InBlock.gif
InBlock.gif                
while ( true )
ExpandedSubBlockStart.gifContractedSubBlock.gif                
dot.gif{
InBlock.gif                    size 
= GzipStream.Read ( writeData,0,size );
InBlock.gif                    
if ( size>0 )
ExpandedSubBlockStart.gifContractedSubBlock.gif                    
dot.gif{
InBlock.gif                        UnZipStream.Write ( writeData,
0,size );
ExpandedSubBlockEnd.gif                    }

InBlock.gif                    
else
ExpandedSubBlockStart.gifContractedSubBlock.gif                    
dot.gif{
InBlock.gif                        
break;
ExpandedSubBlockEnd.gif                    }

ExpandedSubBlockEnd.gif                }

InBlock.gif
InBlock.gif                UnZipStream.Position 
= 0;
InBlock.gif                
using ( StreamReader sr = new StreamReader ( UnZipStream ) )
ExpandedSubBlockStart.gifContractedSubBlock.gif                
dot.gif{
InBlock.gif                    Result 
= sr.ReadToEnd();
InBlock.gif                    sr.Close();
InBlock.gif                    GzipStream.Close ();
ExpandedSubBlockEnd.gif                }

InBlock.gif
ExpandedSubBlockEnd.gif            }

ExpandedSubBlockEnd.gif            
#endregion

InBlock.gif
ContractedSubBlock.gifExpandedSubBlockStart.gif            
未压缩时#region  未压缩时
InBlock.gif            
//如果没有压缩
InBlock.gif
            else
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                
using (StreamReader sr = new StreamReader(objResponse.GetResponseStream()) )
ExpandedSubBlockStart.gifContractedSubBlock.gif                
dot.gif{
InBlock.gif                    Result 
= sr.ReadToEnd();
InBlock.gif
InBlock.gif                    
// Close and clean up the StreamReader
InBlock.gif
                    sr.Close();
ExpandedSubBlockEnd.gif                }

ExpandedSubBlockEnd.gif            }

InBlock.gif
ExpandedSubBlockEnd.gif            
#endregion

InBlock.gif
InBlock.gif            
if (  ( int )objResponse.StatusCode != 200 )
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                
throw ( new HttpApplicationException () );
ExpandedSubBlockEnd.gif            }

InBlock.gif
InBlock.gif
InBlock.gif            
//删除Soap header和Soap Body中的默认的命名空间
InBlock.gif            
//System.Diagnostics.Debug.Write ( Result );
InBlock.gif
            Result = Result.Replace ( "xmlns=\"http://www.*****.com\"" , "" );
InBlock.gif        
//    objResponse.Close ();
InBlock.gif

InBlock.gif            
return Result;
ExpandedBlockEnd.gif        }

None.gif
None.gif
None.gif        
private   static   string   BuildURL ( IACT_API api , bool  byPassSSL )
ExpandedBlockStart.gifContractedBlock.gif        
dot.gif {
InBlock.gif            
string url  = "<protocol>//<server>/pub/agent.dll?qscr=<message>&tpid=<tpid>";
InBlock.gif            
//获取server的ip
InBlock.gif
            url = url.Replace ( "<server>",Config.SERVER );
InBlock.gif            
//获取tpid
InBlock.gif
            url = url.Replace ( "<tpid>",Config.TPID );
InBlock.gif
InBlock.gif            
switch ( api )
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                
case IACT_API.IACT_HotelGenAvail:
InBlock.gif                    url 
=  url.Replace ( "<protocol>","http:");
InBlock.gif                    url 
= url.Replace ( "<message>","haga");
InBlock.gif                    
break;
InBlock.gif
InBlock.gif                
case IACT_API.IACT_HotelDetAvail:
InBlock.gif                    url 
= url.Replace ( "<protocol>","http:" );
InBlock.gif                    url 
= url.Replace ( "<message>" ,"hada" );
InBlock.gif                    
break;
InBlock.gif
InBlock.gif                
case IACT_API.IACT_Ping:
InBlock.gif                    url 
= url.Replace ( "<protocol>","http:" );
InBlock.gif                    url 
= url.Replace ( "<message>" ,"hapg" );
InBlock.gif                    
break;
InBlock.gif
InBlock.gif                
case IACT_API.IACT_BookHold:
InBlock.gif                    
if ( byPassSSL )
ExpandedSubBlockStart.gifContractedSubBlock.gif                    
dot.gif{
InBlock.gif                        url 
= url.Replace ( "<protocol>","http:" );
ExpandedSubBlockEnd.gif                    }

InBlock.gif                    url 
= url.Replace ( "<protocol>","https:" );
InBlock.gif                    url 
= url.Replace ( "<message>","habh" );
InBlock.gif                    
break;
InBlock.gif
InBlock.gif                
case IACT_API.IACT_BookCommit:
InBlock.gif                    
if ( byPassSSL )
ExpandedSubBlockStart.gifContractedSubBlock.gif                    
dot.gif{
InBlock.gif                        url 
= url.Replace ( "<protocol>","http:" );
ExpandedSubBlockEnd.gif                    }

InBlock.gif                    url 
= url.Replace ( "<protocol>","https:" );
InBlock.gif                    url 
= url.Replace ( "<message>","habc" );
InBlock.gif                    
break;
InBlock.gif
InBlock.gif                
case IACT_API.IACT_BookRollback :
InBlock.gif                    
if ( byPassSSL )
ExpandedSubBlockStart.gifContractedSubBlock.gif                    
dot.gif{
InBlock.gif                        url 
= url.Replace ( "<protocol>","http:" );
ExpandedSubBlockEnd.gif                    }

InBlock.gif                    url 
= url.Replace ( "<protocol>" ,"https:" );
InBlock.gif                    url 
= url.Replace ( "<message>","habr" ) ;
InBlock.gif                    
break;
InBlock.gif
InBlock.gif                
case IACT_API.IACT_HotelRateCalendar:
InBlock.gif                    url 
= url.Replace ( "<protocol>","http:" );
InBlock.gif                    url 
= url.Replace ( "<message>","harc" );
InBlock.gif                    
break;
InBlock.gif
InBlock.gif                
case IACT_API.IACT_Retrieve:
InBlock.gif                    
if ( byPassSSL )
ExpandedSubBlockStart.gifContractedSubBlock.gif                    
dot.gif{
InBlock.gif                        url 
= url.Replace ( "<protocol>","http:" );
ExpandedSubBlockEnd.gif                    }

InBlock.gif                    url 
= url.Replace ( "<protocol>" ,"https:" );
InBlock.gif                    url 
= url.Replace ( "<message>","hart" ) ;
InBlock.gif                    
break;
InBlock.gif
InBlock.gif                
case IACT_API.IACT_HotelCancel:
InBlock.gif                    
if ( byPassSSL )
ExpandedSubBlockStart.gifContractedSubBlock.gif                    
dot.gif{
InBlock.gif                        url 
= url.Replace ( "<protocol>","http:" );
ExpandedSubBlockEnd.gif                    }

InBlock.gif                    url 
= url.Replace ( "<protocol>" ,"https:" );
InBlock.gif                    url 
= url.Replace ( "<message>","hahc" ) ;
InBlock.gif                    
break;
InBlock.gif
InBlock.gif                
case IACT_API.IACT_HotelModifyGenAvail:
InBlock.gif                    
if ( byPassSSL )
ExpandedSubBlockStart.gifContractedSubBlock.gif                    
dot.gif{
InBlock.gif                        url 
= url.Replace ( "<protocol>","http:" );
ExpandedSubBlockEnd.gif                    }

InBlock.gif                    url 
= url.Replace ( "<protocol>" ,"https:" );
InBlock.gif                    url 
= url.Replace ( "<message>","hamg" ) ;
InBlock.gif                    
break;
InBlock.gif
InBlock.gif                
case IACT_API.IACT_HotelModifyDetAvail:
InBlock.gif                    
if ( byPassSSL )
ExpandedSubBlockStart.gifContractedSubBlock.gif                    
dot.gif{
InBlock.gif                        url 
= url.Replace ( "<protocol>","http:" );
ExpandedSubBlockEnd.gif                    }

InBlock.gif                    url 
= url.Replace ( "<protocol>" ,"https:" );
InBlock.gif                    url 
= url.Replace ( "<message>","hamd" ) ;
InBlock.gif                    
break;
InBlock.gif
InBlock.gif                
case IACT_API.IACT_HotelModifyHold:
InBlock.gif                    
if ( byPassSSL )
ExpandedSubBlockStart.gifContractedSubBlock.gif                    
dot.gif{
InBlock.gif                        url 
= url.Replace ( "<protocol>","http:" );
ExpandedSubBlockEnd.gif                    }

InBlock.gif                    url 
= url.Replace ( "<protocol>" ,"https:" );
InBlock.gif                    url 
= url.Replace ( "<message>","hamh" ) ;
InBlock.gif                    
break;
InBlock.gif
InBlock.gif                
case IACT_API.IACT_HotelFinancialAdjustment:
InBlock.gif                    
if ( byPassSSL )
ExpandedSubBlockStart.gifContractedSubBlock.gif                    
dot.gif{
InBlock.gif                        url 
= url.Replace ( "<protocol>","http:" );
ExpandedSubBlockEnd.gif                    }

InBlock.gif                    url 
= url.Replace ( "<protocol>" ,"https:" );
InBlock.gif                    url 
= url.Replace ( "<message>","hafa" ) ;
InBlock.gif                    
break;
InBlock.gif
InBlock.gif                
case IACT_API.IACT_HotelOptionChange:
InBlock.gif                    
if ( byPassSSL )
ExpandedSubBlockStart.gifContractedSubBlock.gif                    
dot.gif{
InBlock.gif                        url 
= url.Replace ( "<protocol>","http:" );
ExpandedSubBlockEnd.gif                    }

InBlock.gif                    url 
= url.Replace ( "<protocol>" ,"https:" );
InBlock.gif                    url 
= url.Replace ( "<message>","haoc" ) ;
InBlock.gif                    
break;
ExpandedSubBlockEnd.gif            }

InBlock.gif
InBlock.gif            
return url;
InBlock.gif
InBlock.gif            
ExpandedBlockEnd.gif        }

None.gif
None.gif
ExpandedBlockStart.gifContractedBlock.gif        
/**/ /// <summary>
InBlock.gif        
/// 用于spoofer
InBlock.gif        
/// </summary>
InBlock.gif        
/// <param name="api"></param>
InBlock.gif        
/// <param name="byPassSSL"></param>
InBlock.gif        
/// <param name="soapMessage"></param>
ExpandedBlockEnd.gif        
/// <returns></returns>

None.gif          private   static   string   BuildURL ( IACT_API api , bool  byPassSSL , string  soapMessage)
ExpandedBlockStart.gifContractedBlock.gif        
dot.gif {
InBlock.gif            XmlDocument xmlDoc 
= new XmlDocument();
InBlock.gif            xmlDoc.LoadXml ( soapMessage );
InBlock.gif            
string echoInfo = xmlDoc.SelectSingleNode ( "//EchoInfo" ).InnerText;
InBlock.gif            
string url  = "<protocol>//<server>/pub/agent.dll?qscr=<message>&tpid=<tpid>";
InBlock.gif            
//获取server的ip
InBlock.gif
            url = url.Replace ( "<server>",Config.SERVER );
InBlock.gif            
//获取tpid
InBlock.gif
            url = url.Replace ( "<tpid>",Config.TPID );
InBlock.gif
InBlock.gif            
switch ( api )
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                
case IACT_API.IACT_HotelGenAvail:
InBlock.gif                    
//url =  url.Replace ( "<protocol>","http:");
InBlock.gif                    
//url = url.Replace ( "<message>","haga");
InBlock.gif
                    url = "He/GenAvail/GenAvail.aspx?case="+echoInfo;
InBlock.gif                    
break;
InBlock.gif
InBlock.gif                
case IACT_API.IACT_HotelDetAvail:
InBlock.gif                    url 
= url.Replace ( "<protocol>","http:" );
InBlock.gif                    url 
= url.Replace ( "<message>" ,"hada" );
InBlock.gif                    
InBlock.gif                    url 
= "http://****//DetAvail/DetAvail.aspx?case="+echoInfo;
InBlock.gif                    
break;
InBlock.gif
InBlock.gif                
case IACT_API.IACT_Ping:
InBlock.gif                    url 
= url.Replace ( "<protocol>","http:" );
InBlock.gif                    url 
= url.Replace ( "<message>" ,"hapg" );
InBlock.gif
InBlock.gif
InBlock.gif                    
break;
InBlock.gif
InBlock.gif                
case IACT_API.IACT_BookHold:
InBlock.gif                    
if ( byPassSSL )
ExpandedSubBlockStart.gifContractedSubBlock.gif                    
dot.gif{
InBlock.gif                        url 
= url.Replace ( "<protocol>","http:" );
ExpandedSubBlockEnd.gif                    }

InBlock.gif                    url 
= url.Replace ( "<protocol>","https:" );
InBlock.gif                    url 
= url.Replace ( "<message>","habh" );
InBlock.gif
InBlock.gif                    url 
= "http://****//BookHold/BookHold.aspx?case="+echoInfo;
InBlock.gif                    
break;
InBlock.gif
InBlock.gif                
case IACT_API.IACT_BookCommit:
InBlock.gif                    
if ( byPassSSL )
ExpandedSubBlockStart.gifContractedSubBlock.gif                    
dot.gif{
InBlock.gif                        url 
= url.Replace ( "<protocol>","http:" );
ExpandedSubBlockEnd.gif                    }

InBlock.gif                    url 
= url.Replace ( "<protocol>","https:" );
InBlock.gif                    url 
= url.Replace ( "<message>","habc" );
InBlock.gif
InBlock.gif                    url 
= "http://****//Commit-Roll/Commit-Roll.aspx?case="+echoInfo;
InBlock.gif                    
break;
InBlock.gif
InBlock.gif                
case IACT_API.IACT_BookRollback :
InBlock.gif                    
if ( byPassSSL )
ExpandedSubBlockStart.gifContractedSubBlock.gif                    
dot.gif{
InBlock.gif                        url 
= url.Replace ( "<protocol>","http:" );
ExpandedSubBlockEnd.gif                    }

InBlock.gif                    url 
= url.Replace ( "<protocol>" ,"https:" );
InBlock.gif                    url 
= url.Replace ( "<message>","habr" ) ;
InBlock.gif
InBlock.gif                    url 
= "http://****//Commit-Roll/Commit-Roll.aspx?case="+echoInfo;
InBlock.gif
InBlock.gif
InBlock.gif                    
break;
InBlock.gif
InBlock.gif                
case IACT_API.IACT_HotelRateCalendar:
InBlock.gif                    url 
= url.Replace ( "<protocol>","http:" );
InBlock.gif                    url 
= url.Replace ( "<message>","harc" );
InBlock.gif                    
break;
InBlock.gif
InBlock.gif                
case IACT_API.IACT_Retrieve:
InBlock.gif                    
if ( byPassSSL )
ExpandedSubBlockStart.gifContractedSubBlock.gif                    
dot.gif{
InBlock.gif                        url 
= url.Replace ( "<protocol>","http:" );
ExpandedSubBlockEnd.gif                    }

InBlock.gif                    url 
= url.Replace ( "<protocol>" ,"https:" );
InBlock.gif                    url 
= url.Replace ( "<message>","hart" ) ;
InBlock.gif                    
InBlock.gif                    url 
= "http://****//Retrieve/Retrieve.aspx?case="+echoInfo;
InBlock.gif                    
break;
InBlock.gif
InBlock.gif                
case IACT_API.IACT_HotelCancel:
InBlock.gif                    
if ( byPassSSL )
ExpandedSubBlockStart.gifContractedSubBlock.gif                    
dot.gif{
InBlock.gif                        url 
= url.Replace ( "<protocol>","http:" );
ExpandedSubBlockEnd.gif                    }

InBlock.gif                    url 
= url.Replace ( "<protocol>" ,"https:" );
InBlock.gif                    url 
= url.Replace ( "<message>","hahc" ) ;
InBlock.gif
InBlock.gif                    url 
= "http://****//Cancel/Cancel.aspx?case="+echoInfo;
InBlock.gif
InBlock.gif                    
break;
InBlock.gif
InBlock.gif                
case IACT_API.IACT_HotelModifyGenAvail:
InBlock.gif                    
if ( byPassSSL )
ExpandedSubBlockStart.gifContractedSubBlock.gif                    
dot.gif{
InBlock.gif                        url 
= url.Replace ( "<protocol>","http:" );
ExpandedSubBlockEnd.gif                    }

InBlock.gif                    url 
= url.Replace ( "<protocol>" ,"https:" );
InBlock.gif                    url 
= url.Replace ( "<message>","hamg" ) ;
InBlock.gif
InBlock.gif                    url 
= "http://****//ModifyGenAvail/ModifyGenAvail.aspx?case="+echoInfo;
InBlock.gif
InBlock.gif                    
break;
InBlock.gif
InBlock.gif                
case IACT_API.IACT_HotelModifyDetAvail:
InBlock.gif                    
if ( byPassSSL )
ExpandedSubBlockStart.gifContractedSubBlock.gif                    
dot.gif{
InBlock.gif                        url 
= url.Replace ( "<protocol>","http:" );
ExpandedSubBlockEnd.gif                    }

InBlock.gif                    url 
= url.Replace ( "<protocol>" ,"https:" );
InBlock.gif                    url 
= url.Replace ( "<message>","hamd" ) ;
InBlock.gif
InBlock.gif                    url 
= "http://****//ModifyDetAvail/ModifyDetAvail.aspx?case="+echoInfo;
InBlock.gif
InBlock.gif                    
break;
InBlock.gif
InBlock.gif                
case IACT_API.IACT_HotelModifyHold:
InBlock.gif                    
if ( byPassSSL )
ExpandedSubBlockStart.gifContractedSubBlock.gif                    
dot.gif{
InBlock.gif                        url 
= url.Replace ( "<protocol>","http:" );
ExpandedSubBlockEnd.gif                    }

InBlock.gif                    url 
= url.Replace ( "<protocol>" ,"https:" );
InBlock.gif                    url 
= url.Replace ( "<message>","hamh" ) ;
InBlock.gif                    url 
= "http://****//ModifyHold/ModifyHold.aspx?case="+echoInfo;
InBlock.gif                    
break;
InBlock.gif
InBlock.gif                
case IACT_API.IACT_HotelFinancialAdjustment:
InBlock.gif                    
if ( byPassSSL )
ExpandedSubBlockStart.gifContractedSubBlock.gif                    
dot.gif{
InBlock.gif                        url 
= url.Replace ( "<protocol>","http:" );
ExpandedSubBlockEnd.gif                    }

InBlock.gif                    url 
= url.Replace ( "<protocol>" ,"https:" );
InBlock.gif                    url 
= url.Replace ( "<message>","hafa" ) ;
InBlock.gif                    
break;
InBlock.gif
InBlock.gif                
case IACT_API.IACT_HotelOptionChange:
InBlock.gif                    
if ( byPassSSL )
ExpandedSubBlockStart.gifContractedSubBlock.gif                    
dot.gif{
InBlock.gif                        url 
= url.Replace ( "<protocol>","http:" );
ExpandedSubBlockEnd.gif                    }

InBlock.gif                    url 
= url.Replace ( "<protocol>" ,"https:" );
InBlock.gif                    url 
= url.Replace ( "<message>","haoc" ) ;
InBlock.gif
InBlock.gif                    url 
= "http://****//OptionChange/OptionChange.aspx?case="+echoInfo;
InBlock.gif
InBlock.gif                    
break;
ExpandedSubBlockEnd.gif            }

InBlock.gif
InBlock.gif            
return url;
InBlock.gif
InBlock.gif            
ExpandedBlockEnd.gif        }






转载于:https://www.cnblogs.com/Elong/archive/2005/10/24/260568.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值