Http協定定義了12種方法提供客戶端請求至伺服器,分別為(GET,POST,HEAD,PUT,PATCH,COPY,MOVE,DELETE,LINK,UNLIKE,OPTION)最常見的方法為GET與POST。
GET與POST的差別 :
兩者的差別在於傳送封包裡的內容,Http封包內包含header(標頭)與data(資訊),header就像是信封上的地址,data就是裡面的資訊。
header:http://xxx.xxx
data:id=201
GET:把data直接加在在header後面,像是http://xxx?id=201,這種方法不適合放有安全疑慮的資訊。
POST:把header與data分開放,此方法適合有安全疑慮的資訊
程式碼(使用GET):
 
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import javax.net.ssl.HttpsURLConnection;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
public class JsonReader {
 
 public static String getJSON(String url, int timeout) throws IOException {
     URL u = new URL(url);
     HttpURLConnection c = (HttpURLConnection) u.openConnection();
     c.setRequestMethod("GET");
     c.setUseCaches(false);
     c.setAllowUserInteraction(false);
     c.setConnectTimeout(timeout);   //设置连接主机超时(单位:毫秒) 
     c.setReadTimeout(timeout);      //设置从主机读取数据超时(单位:毫秒) 
     c.setRequestProperty("User-Agent","Mozilla/5.0");
     c.connect();
     int status = c.getResponseCode();
     switch (status) {
         case 200:
         case 201:
             BufferedReader br = new BufferedReader(new InputStreamReader(c.getInputStream(),"utf-8"));
             StringBuilder sb = new StringBuilder();
             String line;
             while ((line = br.readLine()) != null) {
                 sb.append(line + "\n");
             }
             br.close();
             return sb.toString();
     }
     return null;
 }
    public static void main(String[] args) throws IOException {
     
     String s = getJSON("http://data.ntpc.gov.tw/od/data/api/18621BF3-6B00-4A07-B49C-0C5CCABFE026?$format=json&$filter=routeNameZh%20eq%20637",9000);
     try {
   JSONArray jsonarray = new JSONArray(s);
   JSONObject obj = jsonarray.getJSONObject(0);
   System.out.println(obj.get("latitude"));
  } catch (JSONException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
     
    }
}
 
Abc123
回覆刪除