1 package com.zachary.xmlresolve;
2
3 import java.io.BufferedReader;
4 import java.io.IOException;
5 import java.io.InputStreamReader;
6 import java.net.HttpURLConnection;
7 import java.net.MalformedURLException;
8 import java.net.URL;
9
10 import android.app.Activity;
11 import android.os.Bundle;
12 import android.util.Log;
13 import android.view.Menu;
14 import android.widget.TextView;
15
16 public class MainActivity extends Activity {
17 private TextView myTextView;
18 private String xml;
19 private boolean finish = false;
20 final static String TAG = "LOGCAT";
21 @Override
22 protected void onCreate(Bundle savedInstanceState) {
23 super.onCreate(savedInstanceState);
24 setContentView(R.layout.activity_main);
25 //String xmlStr = "![CDATA[你好啊 。。。 ]]";
26 myTextView = (TextView)findViewById(R.id.myTextView);
27 //xml = getMidString(xmlStr, "![CDATA[", "]]");
28 //myTextView.setText(xml);
29 //System.out.println(xml);
30 String urlStr ="http://box.zhangmen.baidu.com/x?op=12&count=1&title=%E6%80%92%E6%94%BE%E7%9A%84%E7%94%9F%E5%91%BD$$%E6%B1%AA%E5%B3%B0$$$$";
31 new downloadThread(urlStr).start();
32 while(!finish) ;
33 myTextView.setText(xml);
34 finish = false;
35 String count = getMidString(xml, "<count>", "</count>");
36 String encode, decode, lrcid, musicUrlStr, lrcUrlStr;
37 if(count != "0")
38 {
39 encode = getMidString(xml, "<encode><![CDATA[", "]]></encode>");
40 decode = getMidString(xml, "<decode><![CDATA[", "]]></decode>");
41 lrcid = getMidString(xml, "<lrcid>", "</lrcid>");
42 musicUrlStr = getMusicUrlStr(encode, decode);
43 lrcUrlStr = getLrcUrlStr(lrcid);
44 myTextView.setText(musicUrlStr + "\n******\n" + lrcUrlStr);
45 }
46 else
47 myTextView.setText("Not found");
48 }
49 public String getMidString(String inputstring, String left,String right){
50 int k0 = inputstring.indexOf(left);
51 if(k0<0){
52 return "";
53 }
54 int k1= k0+left.length();
55 int k2 = inputstring.indexOf(right,k1);
56 if(k2<=k1){
57 return "";
58 }
59 String return_v = inputstring.substring(k1,k2);
60 return return_v;
61 }
62
63 public String getMusicUrlStr(String encode, String decode){
64 int k0 = encode.lastIndexOf("/");
65 if(k0<0)
66 return "";
67 String musicUrlStr = encode.substring(0, k0+1) + decode;
68 return musicUrlStr;
69 }
70
71 public String getLrcUrlStr(String lrcid){
72 if(lrcid == "0")
73 return "";
74 String lrcUrlStr = "http://box.zhangmen.baidu.com/bdlrc/";
75 String mid = lrcid.substring(0, lrcid.length()-2);
76 return lrcUrlStr + mid + "/" + lrcid + ".lrc";
77 }
78 class downloadThread extends Thread {
79 String urlStr;
80 downloadThread(String urlStr){
81 this.urlStr = urlStr;
82 Log.i(TAG, "Creat the Thread");
83 }
84
85 @Override
86 public void run() {
87 StringBuffer sb = new StringBuffer();
88 String line = null;
89 BufferedReader buffer = null;
90 try {
91 URL url = new URL(urlStr);
92 HttpURLConnection urlConn = (HttpURLConnection)url.openConnection();
93 buffer = new BufferedReader(new InputStreamReader(urlConn.getInputStream()));
94 while((line = buffer.readLine())!=null)
95 sb.append(line);
96 } catch (MalformedURLException e) {
97 e.printStackTrace();
98 } catch (IOException e) {
99 e.printStackTrace();
100 }finally{
101 try {
102 buffer.close();
103 xml = sb.toString();
104 finish = true;
105 //myTextView.setText(xml);
106 System.out.println(xml);
107 Log.i(TAG, xml);
108 } catch (IOException e) {
109 e.printStackTrace();
110 }
111 }
112
113 }
114
115
116 }
117
118 @Override
119 public boolean onCreateOptionsMenu(Menu menu) {
120 // Inflate the menu; this adds items to the action bar if it is present.
121 getMenuInflater().inflate(R.menu.main, menu);
122 return true;
123 }
124
125 }