Skip to content

Commit 2688dea

Browse files
committed
Merge pull request tangqi92#1 from tangqi92/master
merge new code
2 parents 558a04c + ce8628d commit 2688dea

File tree

8 files changed

+188
-0
lines changed

8 files changed

+188
-0
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
Utils/URLChecker/out
2+
Utils/URLChecker/*.class

README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -310,6 +310,10 @@
310310

311311
## S
312312

313+
### SearchView
314+
315+
1. [详细解读Android中的搜索框(三)—— SearchView](http://www.cnblogs.com/tianzhijiexian/p/4226675.html)
316+
313317
### Serializable
314318

315319
1. [Android系统中Parcelable和Serializable的区别](http://greenrobot.me/devpost/android-parcelable-serializable/)

Utils/README.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
### 检查URL连接是否有效的小工具
2+
---
3+
4+
因为有人问起,这个repo里面有些连接失效、无法访问或者被墙等。所有就打算把那些正常访问的连接修改或者转移到repo里面。
5+
但是不可能一个一个链接测试啊,所以就写了这个java小程序
6+
7+
我只是一个初学者,可能写得很挫,但是求别嫌弃 ==
8+
9+
`Main.java`是入口程序,默认会在repo的根目录下更新失效的连接。
10+
> 以200返回值为连接成功的标准

Utils/URLChecker/BadUrlsSaver.java

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
import java.io.BufferedWriter;
2+
import java.io.File;
3+
import java.io.FileWriter;
4+
import java.io.IOException;
5+
import java.util.Map;
6+
7+
/**
8+
* Created by Troy Liu on 2015,九月,17, 23:21.
9+
*/
10+
public class BadUrlsSaver {
11+
12+
/**
13+
* 保存有问题的网址到repo目录下
14+
*
15+
* @param map
16+
* @param isSaveAlLMatterUrls
17+
* @throws IOException
18+
*/
19+
public static void save(Map<String, String> map, boolean isSaveAlLMatterUrls) throws IOException {
20+
File file = new File("..\\..\\badUrls.txt");
21+
if (!file.exists()) {
22+
file.createNewFile();
23+
}
24+
FileWriter writer = new FileWriter(file);
25+
BufferedWriter bufferedWriter = new BufferedWriter(writer);
26+
for (Map.Entry<String, String> entry : map.entrySet()) {
27+
if (isSaveAlLMatterUrls) {
28+
bufferedWriter.write(entry.getValue() + "\t\t" + entry.getKey() + "\r\n");
29+
} else {
30+
if (entry.getValue().equals("TIMEOUT")) {
31+
bufferedWriter.write(entry.getValue() + "\t\t" + entry.getKey() + "\r\n");
32+
}
33+
}
34+
}
35+
bufferedWriter.close();
36+
}
37+
}

Utils/URLChecker/Main.java

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import java.io.IOException;
2+
import java.util.Map;
3+
4+
/**
5+
* Created by Troy Liu on 2015,九月,17, 22:10.
6+
*/
7+
public class Main {
8+
9+
// 是否保存所有有连接问题的url
10+
public static final boolean saveAllMatterUrls = true;
11+
12+
public static void main(String[] args) {
13+
String urlBundle = "https://raw.githubusercontent.com/tangqi92/Android-Tips/master/README.md";
14+
Map<String, String> matterUrls = NetUtils.getNotAvailableUrl(urlBundle);
15+
for (Map.Entry<String, String> entry : matterUrls.entrySet()) {
16+
System.out.println(entry.getValue() + "--->" + entry.getKey());
17+
}
18+
try {
19+
BadUrlsSaver.save(matterUrls, saveAllMatterUrls);
20+
} catch (IOException e) {
21+
e.printStackTrace();
22+
}
23+
}
24+
}

Utils/URLChecker/NetUtils.java

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
import java.io.BufferedReader;
2+
import java.io.IOException;
3+
import java.io.InputStream;
4+
import java.io.InputStreamReader;
5+
import java.net.HttpURLConnection;
6+
import java.net.MalformedURLException;
7+
import java.net.URL;
8+
import java.util.HashMap;
9+
import java.util.List;
10+
import java.util.Map;
11+
12+
/**
13+
* Created by Troy Liu on 2015,九月,17, 22:16.
14+
*/
15+
public class NetUtils {
16+
17+
public static final int TIME_OUT = 1000;
18+
19+
public static String getBundle(String urlMain) {
20+
StringBuilder stringBuilder = null;
21+
try {
22+
URL url = new URL(urlMain);
23+
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
24+
InputStream inputStream;
25+
stringBuilder = new StringBuilder();
26+
BufferedReader bufferedReader = null;
27+
if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) {
28+
inputStream = connection.getInputStream();
29+
bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
30+
String line = null;
31+
while ((line = bufferedReader.readLine()) != null) {
32+
stringBuilder.append(line);
33+
}
34+
}
35+
bufferedReader.close();
36+
connection.disconnect();
37+
} catch (MalformedURLException e) {
38+
e.printStackTrace();
39+
} catch (IOException e) {
40+
e.printStackTrace();
41+
}
42+
return stringBuilder.toString();
43+
}
44+
45+
public static Map<String, String> getNotAvailableUrl(String urlMain) {
46+
Map<String, String> matterUrls = new HashMap<String, String>();
47+
String response = getBundle(urlMain);
48+
List<String> urlList = UrlMatcher.getUrlStr(response);
49+
for (String url : urlList) {
50+
checkUrl(url, matterUrls);
51+
}
52+
return matterUrls;
53+
}
54+
55+
private static void checkUrl(String url, Map<String, String> map) {
56+
int responseCode = 0;
57+
try {
58+
System.out.print("checking [" + url + "]");
59+
URL tmp = new URL(url);
60+
HttpURLConnection connection = (HttpURLConnection) tmp.openConnection();
61+
connection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.85 Safari/537.36");
62+
connection.setRequestMethod("GET");
63+
connection.setConnectTimeout(TIME_OUT);
64+
responseCode = connection.getResponseCode();
65+
if (responseCode == HttpURLConnection.HTTP_OK) {
66+
System.out.println("----->[OK]");
67+
} else {
68+
System.out.println("----->[BAD]" + "; Code--->" + responseCode);
69+
map.put(url, "BAD");
70+
}
71+
connection.disconnect();
72+
} catch (MalformedURLException e) {
73+
e.printStackTrace();
74+
} catch (IOException e) {
75+
System.out.println("[Time Out]");
76+
map.put(url, "TIMEOUT");
77+
}
78+
}
79+
80+
}

Utils/URLChecker/UrlMatcher.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import java.util.ArrayList;
2+
import java.util.List;
3+
import java.util.regex.Matcher;
4+
import java.util.regex.Pattern;
5+
6+
/**
7+
* Created by Troy Liu on 2015,¾ÅÔÂ,17, 22:11.
8+
*/
9+
public class UrlMatcher {
10+
public static List getUrlStr(String response) {
11+
Pattern pattern = Pattern.compile("(http|ftp|https):\\/\\/[\\w\\-_]+(\\.[\\w\\-_]+)+([\\w\\-\\.,@?^=%&amp;:/~\\+#]*[\\w\\-\\@?^=%&amp;/~\\+#])?");
12+
Matcher matcher = pattern.matcher(response);
13+
List<String> urlList = new ArrayList<String>();
14+
while (matcher.find()) {
15+
urlList.add(matcher.group());
16+
}
17+
return urlList;
18+
}
19+
}

badUrls.txt

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
TIMEOUT https://gist.github.com/polbins/e37206fbc444207c0e92
2+
TIMEOUT http://developer.android.com/guide/topics/resources/runtime-changes.html
3+
TIMEOUT https://developer.android.com/training/system-ui/immersive.html
4+
TIMEOUT https://www.youtube.com/watch?v=5U_BfrXV90I
5+
TIMEOUT http://chenqichao.me/2014/05/13/003-Android-Studio-AIDL/
6+
TIMEOUT http://foocoder.com/blog/androidzhong-de-kua-jin-cheng-tong-xin-de-shi-xian-
7+
TIMEOUT http://source.android.com/source/code-style.html
8+
TIMEOUT http://li2.me/android/Displaying-Lists-with-ListFragment/
9+
TIMEOUT http://droidyue.com/blog/2014/09/20/interaction-between-java-and-javascript-in-android/
10+
TIMEOUT http://baoyz.com/android/2014/10/21/android-palette-use/
11+
TIMEOUT https://www.zybuluo.com/flyouting/note/6996
12+
BAD http://snowdream86.gitbooks.io/github-cheat-sheet/content/zh/index.html

0 commit comments

Comments
 (0)