1、
MP3資源都在互聯網上,有時聽不了也是正常,但大多數不好用,真是用處不大了。仔細分析了一下它的源碼,原來是讀取目錄下的1.xml,2.xml..4.xml文件。我經常在番茄花園聽歌,也就是http://www.tomatolei.com,就想能不能把番茄的MP3資源放到這裏來放呢?這不就是大家常說的MP3小偷的功能嗎?說幹就幹!
1、分析一下番茄花園的歌來源: PageUrl = "http://tomatolei.com/bbs/T_playlist.asx";
2、目標地址:1.xml
3、用程序轉換格式:
前臺:<%@ Page language="c#" Codebehind="ReadAndWriteXml.aspx.cs" AutoEventWireup="false" Inherits="讀取番茄花園的MP3.ReadAndWriteXml" validateRequest=false%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>讀取番茄花園MP3列表</title>
<meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
<meta content="C#" name="CODE_LANGUAGE">
<meta content="JavaScript" name="vs_defaultClientScript">
<meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<FONT face="宋體">
<asp:TextBox id="TextBox1" style="Z-INDEX: 101; LEFT: 56px; POSITION: absolute; TOP: 32px" runat="server"
Width="312px" Height="240px" TextMode="MultiLine"></asp:TextBox>
<asp:Button id="Button1" style="Z-INDEX: 102; LEFT: 160px; POSITION: absolute; TOP: 288px" runat="server"
Width="96px" Text="修正~"></asp:Button></FONT></form>
</body>
</HTML>
後臺:using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.IO;
using System.Net;
using System.Text;
using System.Text.RegularExpressions;
namespace 讀取番茄花園的MP3
{
/// <summary>
/// WebForm1 的摘要說明。
/// </summary>
public class ReadAndWriteXml : System.Web.UI.Page
{
protected System.Web.UI.WebControls.TextBox TextBox1;
protected System.Web.UI.WebControls.Button Button1;
private string PageUrl = "";
private void Page_Load(object sender, System.EventArgs e)
{
// 在此處放置用戶代碼以初始化頁面
if(!IsPostBack)
{
///首先讀取番茄花園的acx文件(http://tomatolei.com/bbs/T_playlist.asx)
///
PageUrl = "http://tomatolei.com/bbs/T_playlist.asx";
WebClient wc = new WebClient();
wc.Credentials = CredentialCache.DefaultCredentials;
Byte[] pageData = wc.DownloadData(PageUrl);
string Result = Encoding.Default.GetString(pageData);
TextBox1.Text=Result;
}
}
#region Web 窗體設計器生成的代碼
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 該調用是 ASP.NET Web 窗體設計器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 設計器支持所需的方法 - 不要使用代碼編輯器修改
/// 此方法的內容。
/// </summary>
private void InitializeComponent()
{
this.Button1.Click += new System.EventHandler(this.Button1_Click);
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
private void Button1_Click(object sender, System.EventArgs e)
{
string temp=TextBox1.Text;
TextBox1.Text="<musics firstRun=/"1/">";
TextBox1.Text+=temp;
TextBox1.Text=TextBox1.Text.Replace("<Asx Version=3.0>","");
TextBox1.Text=TextBox1.Text.Replace("<Param Name=/"AllowShuffle/" Value=/"yes/"/> ","");
TextBox1.Text=TextBox1.Text.Replace("</Asx>","");
TextBox1.Text=TextBox1.Text.Replace("</Entry>","");
TextBox1.Text=TextBox1.Text.Replace("<Entry>","");
TextBox1.Text=TextBox1.Text.Replace("<Title>","<music name=/"");
TextBox1.Text=TextBox1.Text.Replace("</Title>","/"");
TextBox1.Text=TextBox1.Text.Replace("<Ref href=","addres=");
TextBox1.Text+="</musics>";
//TextBox1.Text=TextBox1.Text.Replace("/r/n","");
/// 下面開始生成 1.xml文件
///
StreamWriter swFromFileStreamUTF8Buffer=new StreamWriter(Server.MapPath("./")+"1.xml",false,System.Text.Encoding.UTF8,512);
swFromFileStreamUTF8Buffer.Write(TextBox1.Text);
swFromFileStreamUTF8Buffer.Flush();
swFromFileStreamUTF8Buffer.Close();
}
}
}
2、
在.Net 平臺下,創建一個ASP.Net的程序
1、引用兩個NAMESPACE
using System.Text //因爲用了Encoding類
using System.Net //因爲用了WebClient 類
2、整個程序用了三個控件
txtUrl //輸入你要獲取的網頁地址 TEXTBOX控件
txtBody //得到你要獲取的網頁內容 TEXTBOX控件
btnReturn //按鈕BUTTON控件
3、在***.aspx.cs下的代碼
private void btnReturn_Click(object sender, System.EventArgs e)
{
string url=txtUrl.Text.Trim(); //獲取輸入的網頁地址
WebClient wb=new WebClient(); //創建一個WebClient實例
//獲取或設置用於對向 Internet 資源的請求進行身份驗證的網絡憑據。(可有可無)
//wb.Credentials=CredentialCache.DefaultCredentials;
//從資源下載數據並返回字節數組。(加@是因爲網址中間有"/"符號)
byte[] pagedata=wb.DownloadData(@url);
//轉換字符、
string result=Encoding.Default.GetString(pagedata);
txtBody.Text=result;
}
4、字***.aspx的HTML代碼中加入一條代碼
在第一行代碼<%@ page=.............................%> 中加入validateRequest=false
總結:整個代碼不過才幾行,而且還不用操心亂碼的事情,我是昨天自己在幫助文檔裏偶然看見的,其實WebClient類有很多下載資源和上載資源的方法,有興趣的朋友可以看看下面有關WebClient類的幫助文檔:
WebClient 類請參見
WebClient 成員 | System.Net 命名空間 | WebRequest | WebResponse | HttpWebRequest |
HttpWebResponse | WebClient 成員(Visual J# 語法) | C++ 託管擴展編程
要求
命名空間: System.Net
平臺: Windows 98, Windows NT 4.0, Windows ME, Windows 2000, Windows XP Home Edition, Windows XP
Professional, Windows Server 2003 系列
程序集: System (在 System.dll 中)
.NET Framework 安全性:
WebPermission,用於訪問所請求的 URI 或請求被重定向到的任何 URI。關聯的枚舉:Connect。
語言
C#
C++
JScript
Visual Basic
全部顯示
提供向 URI 標識的資源發送數據和從 URI 標識的資源接收數據的公共方法。不能繼承此類。
有關此類型所有成員的列表,請參閱 WebClient 成員。
System.Object
System.MarshalByRefObject
System.ComponentModel.Component
System.Net.WebClient
[Visual Basic]
<ComVisible(True)>
NotInheritable Public Class WebClient
Inherits Component
[C#]
[ComVisible(true)]
public sealed class WebClient : Component
[C++]
[ComVisible(true)]
public __gc __sealed class WebClient : public Component
[JScript]
public
ComVisible(true)
class WebClient extends Component
線程安全
此類型的所有公共靜態(Visual Basic 中爲 Shared)成員對多線程操作而言都是安全的。但不保證任何實例
成員是線程安全的。
備註
WebClient 類提供向 URI 標識的任何本地、Intranet 或 Internet 資源發送數據以及從這些資源接收數據的
公共方法。
WebClient 類使用 WebRequest 類提供對 Internet 資源的訪問。WebClient 實例可以通過任何已向
WebRequest.RegisterPrefix 方法註冊的 WebRequest 子代訪問數據。
注意 默認情況下,.NET Framework 支持以 http:、https: 和 file: 方案標識符開頭的 URI。
WebClient 類提供四種將數據上載到資源的方法:
OpenWrite 返回一個用於將數據發送到資源的 Stream。
UploadData 將字節數組發送到資源並返回包含任何響應的字節數組。
UploadFile 將本地文件發送到資源並返回包含任何響應的字節數組。
UploadValues 將 NameValueCollection 發送到資源並返回包含任何響應的字節數組。
WebClient 類還提供三種從資源下載數據的方法:
DownloadData 從資源下載數據並返回字節數組。
DownloadFile 從資源將數據下載到本地文件。
OpenRead 從資源以 Stream 的形式返回數據。
要求
命名空間: System.Net
平臺: Windows 98, Windows NT 4.0, Windows ME, Windows 2000, Windows XP Home Edition, Windows XP
Professional, Windows Server 2003 系列
程序集: System (在 System.dll 中)
.NET Framework 安全性:
WebPermission,用於訪問所請求的 URI 或請求被重定向到的任何 URI。關聯的枚舉:Connect。
3、
Imports System.net
Imports System.io
Public Class WebForm1
Inherits System.Web.UI.Page
Public web As New WebClient
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'讀網頁源文件先
If Session("aaa") = "" Then
Dim str As Stream
str = web.OpenRead("http://www.023ehouse.com")
Dim read As New StreamReader(str, System.Text.Encoding.GetEncoding("GB2312"))
Dim html As String = read.ReadToEnd()
'接下來當然是分析源文件,提出自己要用的了
Dim aaa, bbb, ccc '這裏定義的都是用來處理結果的,要把中間自己要用的新聞給截取出來
aaa = CStr(html)
bbb = Split(aaa, "<div id=""onlinemb_05"">")
aaa = bbb(1)
ccc = Split(bbb(1), "</div>")
aaa = ccc(0)
'這裏是把新聞地址轉到自己的新聞顯示頁面,把本來的新聞地址當參數傳給頁面
aaa = Replace(aaa, "href=""", "href=""newsshow.asp?url=http://www.023ehouse.com/")
aaa = Replace(aaa, "target=""_blank""", "")
'這裏就是寫session了
Session("aaa") = aaa
End If
'最後把處理好的輸出
Response.Write(Session("aaa"))
End Sub
End Class