Android 以 HTTPS 方式連結讀取 PHP 網頁資訊
//因網路上的解決方案大都以 http 方式處理,但為了安全上的考量我才試著用 https 的方式!
//以下程式碼為正式在使用中的部分代碼
//實際環境為 Android 2.1,2.2 搭配 php5.3 使用
import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import javax.net.ssl.HttpsURLConnection; //與 HTTPS 有關
import javax.net.ssl.SSLContext; //與 HTTPS 有關
import javax.net.ssl.TrustManager; //與 HTTPS 有關
import javax.net.ssl.X509TrustManager; //與 HTTPS 有關
public class download extends Activity {
String Check_Result = "";
String MessageStr = "";
String url ="https://www.test.com.tw/get_result.php?P1=XXXX&P2=YYYYY";
ConnectCheck(url);
if (Check_Result.equals("PASS")) {
//do .....
}
else {
// do ....
}
private void ConnectCheck(String path) {
try {
System.setProperty("java.protocol.handler.pkgs","com.sun.net.ssl.internal.www.protocol");
System.setProperty("javax.net.ssl.trustStore","keystore");
TrustManager easyTrustManager = new X509TrustManager()
{
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return null;
}
public void checkClientTrusted(java.security.cert.X509Certificate[] chain, String authType){
}
public void checkServerTrusted(java.security.cert.X509Certificate[] chain, String authType) throws java.security.cert.CertificateException {
}
};
URL url = new URL(path);
SSLContext sslcontext = SSLContext.getInstance("TLS");
sslcontext.init(null, new TrustManager[] { easyTrustManager }, null);
HttpsURLConnection.setDefaultSSLSocketFactory(sslcontext.getSocketFactory());
HttpsURLConnection shuc = (HttpsURLConnection) url.openConnection();
shuc.setDoInput(true);
shuc.setDoOutput(true);
BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
String line = "";
Check_Result = "PASS";
while ((line = in.readLine()) != null) {
String[] names = line.split("#"); //讀取 https://www.test.com.tw/get_result.php?P1=XXXX&P2=YYYYY 以 # 分割的字串
if (names[0].equals("ERROR") || names[0] == null ) {
Check_Result ="Fail!!";
}
}
}
catch(Exception e)
{
e.printStackTrace();
MessageStr += e.getMessage();
}
}
}
後記:
請參考 http://jason0615.pixnet.net/blog/post/68611791 為你的web server 加上網頁流量壓縮功能