java獲取介面
❶ 關於java調用url介面方法的問題
對於具體的數據請求方式、請求方式、響應數據格式要看你的介面要求,這是通用代碼:
importjava.io.BufferedReader;
importjava.io.IOException;
importjava.io.InputStreamReader;
importjava.net.HttpURLConnection;
importjava.net.URL;
publicclassTest{
publicstaticvoidmain(String[]args)throwsIOException{
System.out.println(getData());
}
publicstaticStringgetData()throwsIOException{
//創建指定url的url對象,這里的地址是:淘寶商品搜索建議
URLurl=newURL("https://suggest.taobao.com/sug?code=utf-8&q=電腦&callback=cb");
//創建http鏈接對象
HttpURLConnectioncon=(HttpURLConnection)url.openConnection();
//設置請求方式
con.setRequestMethod("POST");
//打開鏈接,上一步和該步驟作用相同,可以省略
con.connect();
//獲取請求返回內容並設置編碼為UTF-8
BufferedReaderreader=newBufferedReader(newInputStreamReader(con.getInputStream(),"UTF-8"));
//將返回數據拼接為字元串
StringBuffersb=newStringBuffer();
//臨時字元串
Stringtemp=null;
//獲取數據
while((temp=reader.readLine())!=null){
sb.append(temp);
}
//關閉流
reader.close();
returnsb.toString();
}
}
結果:
❷ JAVA調用介面
介面可以看成是沒有實例域的抽象類,是為了實現Java多重繼承的功能。
介面可以將做什麼和怎麼做分離開,介面定義要做什麼,通過implements Interface的類實現介面的function。
也就是這個類具有這個介面的方法,我們可以通過實例化這個類的對象,調用其所具有的介面的方法和自身的方法。
❸ java 調用介面獲取伺服器IP和埠號
package test5;
public interface A {
void setAll(int ID,String IP);
String getAll();
}
package test5;
public class B implements A{
String IP;
int ID;
public void setAll(int ID,String IP) {
this.ID=ID;
this.IP=IP;
}
public String getAll() {
return "ID為: "+ID+"\t\t"+"IP為: "+IP;
}
public static void main(String[] args) {
B b=new B();
b.setAll(1, "192.168.1.1");
System.out.println(b.getAll());
}
}
❹ java如何獲得實現介面的實際類型
Class clz = list.getClass();
//獲取實際類型 即new誰獲取誰的類型
System.out.println(clz);
❺ java 怎麼獲取url介面json數據
String oParams = "Field1=10" ; //設置參數
String url = "/api/SimpleInfoDocumentByField";
HttpClient httpclient = new HttpClient();
httpclient.getHostConfiguration().setHost("192.168.0.231", 7000, "http");
String urlBody = null;
try {
GetMethod getMethod= new GetMethod(url + "?" + oParams);
getMethod.setRequestHeader("Content-type", "text/JSON; charset=UTF-8");
// 鏈接超時(單位毫秒)
httpclient.getHttpConnectionManager().getParams()
.setConnectionTimeout(3000);
// 讀取超時(單位毫秒)
httpclient.getHttpConnectionManager().getParams()
.setSoTimeout(3000);
int statusCode = httpclient.executeMethod(getMethod);
if (statusCode == 200) {
urlBody = getMethod.getResponseBodyAsString();
}
getMethod.releaseConnection();
} catch(Exception e){
e.printStackTrace();
}
還有一種postMethod,自己網路吧。
❻ java 訪問一個介面得到介面返回JSON,步驟是怎麼做的
java中的介面是一種特殊的類,使用關鍵字interface創建。介面功能完全實現後,可以打成jar包,提供給其他公司使用。
要返回json格式數據,可以把介面中抽象方法的返回值類型規定為JSONObject或JSONString類型。這樣當其他公司調用時,得到的數據就是json數據了。
另外,以jar形式提供的介面,可以通過反編譯得到你的源碼,如果你不希望開源,就要加密了。
❼ Java 怎麼通過反射獲取並實現這個類裡面的介面,並且實現介面中的方法
獲取當前線程的ClassLoader,通過ClassLoader獲取當前工作目錄,對目錄下的文件進行遍歷掃描。過濾出以.class為後綴的類文件,並載入類到list中,對list中所有類進行校驗,判斷是否為指定介面的實現類,並排除自身。返回所有符合條件的類。
這個方沒有考慮不同的文件格式。當程序打成jar包,發布運行時,上述的這種遍歷file的操作就失效了。只能掃描到當前方法的同級目錄及其子目錄。無法覆蓋整個模塊,遍歷文件的邏輯太啰嗦,可以簡化。
(7)java獲取介面擴展閱讀:
Java使用注意事項:
1、如果沒有定義環境變數classpath,java啟動jvm後,會在當前目錄下查找要運行的類文件。
2、如果指定了classpath,那麼會在指定的目錄下查找要運行的類文件。
3、PATH環境變數。作用是指定命令搜索路徑,在命令行下面執行命令如javac編譯java程序時,它會到PATH變數所指定的路徑中查找看是否能找到相應的命令程序。
4、需要把jdk安裝目錄下的bin目錄增加到現有的PATH變數中,bin目錄中包含經常要用到的可執行文件如javac/java/javadoc等待,設置好PATH變數後,就可以在任何目錄下執行javac/java等工具了。
❽ java中怎麼調用api數據介面
java發一個http請求過去,帶上參數就可以了啊,跟我們在瀏覽器上訪問資源是一樣的只是它返回的是json格式的數據而已
給你兩個方法吧:
publicstaticStringdo_post(Stringurl,List<NameValuePair>name_value_pair)throwsIOException{
Stringbody="{}";
DefaultHttpClienthttpclient=newDefaultHttpClient();
try{
HttpPosthttpost=newHttpPost(url);
httpost.setEntity(newUrlEncodedFormEntity(name_value_pair,StandardCharsets.UTF_8));
HttpResponseresponse=httpclient.execute(httpost);
HttpEntityentity=response.getEntity();
body=EntityUtils.toString(entity);
}finally{
httpclient.getConnectionManager().shutdown();
}
returnbody;
}
publicstaticStringdo_get(Stringurl)throwsClientProtocolException,IOException{
Stringbody="{}";
DefaultHttpClienthttpclient=newDefaultHttpClient();
try{
HttpGethttpget=newHttpGet(url);
HttpResponseresponse=httpclient.execute(httpget);
HttpEntityentity=response.getEntity();
body=EntityUtils.toString(entity);
}finally{
httpclient.getConnectionManager().shutdown();
}
returnbody;
}
❾ 在java中,什麼是介面,介面的特點是什麼
Java介面(Interface),是一系列方法的聲明,是一些方法特徵的集合,一個介面只有方法的特徵沒有方法的實現,因此這些方法可以在不同的地方被不同的類實現,而這些實現可以具有不同的行為(功能)。
一.介面含義:
1.Java介面,Java語言中存在的結構,有特定的語法和結構;2.一個類所具有的方法的特徵集合,是一種邏輯上的抽象。
前者叫做「Java介面」,後者叫做「介面」。
Java介面本身沒有任何實現,因為Java介面不涉及表象,而只描述public行為,所以Java介面比Java抽象類更抽象化。
Java介面的方法只能是抽象的和公開的,Java介面不能有構造器,Java介面可以有public,靜態的和final屬性。
二.為何用介面Java是一種單繼承的語言,若要給已有父類的具體類增加新功能,在OCP原則下,解決是給它的父類加父類,或者給它父類的父類加父類,直到移動到類等級結構的最頂端。這樣一來,對一個具體類的可插入性的設計,就變成了對整個等級結構中所有類的修改。
當有了介面,以上例子中,就不需要維護整個等級結構中的所有類了.
三.介面具胡可插入性:
在一個等級結構中的任何一個類都可以實現一個介面,這個介面會影響到此類的所有子類,但不會影響到此類的任何超類。此類將不得不實現這個介面所規定的方法,而其子類可以從此類自動繼承這些方法,當然也可以選擇置換掉所有的這些方法,或者其中的某一些方法,這時候,這些子類具有了可插入性(並且可以用這個介面類型裝載,傳遞實現了他的所有子類)。
介面提供了關聯以及方法調用上的可插入性,軟體系統的規模越大,生命周期越長,介面使得軟體系統的靈活性和可擴展性,可插入性方面得到保證。
正是有了介面,使得Java單繼承性有了新的擴展的可能(變向地實現多繼承);三.類型等級結構Java介面(以及抽象類)一般用來作為一個類型的等級結構的起點。
如果一個類已經有了一個主要的超類型,那麼通過實現一個介面,這個類可以擁有另一個次要的超類型,這種次要的超類型叫做混合類型。
四.Java介面分類
1、普通介面(含有方法定義)publicinterfaceActionListener{(ActionEventevent);}
2、標識介面(無任何方法和屬性定義)標識介面是沒有任何方法和屬性的介面.標識介面不對實現它的類有任何語義上的要求,它僅僅表明實現它的類屬於一個特定的類型。
publicinterfaceSerializable{};
3、常量介面是指用Java介面來聲明一些常量,然後由實現這個介面的類使用這些常量。
publicinterfaceAppConstants{publicstaticfinalDATA_SOURCE_NAME="test";publicstaticfinalUSER_NAME="test";publicstaticfinalPASSWORD="test";}
五.介面的特點
1、Java介面中的成員變數默認都是public,static,final類型的(都可省略),必須被顯示初始化,即介面中的成員變數為常量(大寫,單詞之間用"_"分隔)
2、Java介面中的方法默認都是public,abstract類型的(都可省略),沒有方法體,不能被實例化
3、Java介面中只能包含public,static,final類型的成員變數和public,abstract類型的成員方法
4、介面中沒有構造方法,不能被實例化5、一個介面不能實現(implements)另一個介面,但它可以繼承多個其它的介面
6、Java介面必須通過類來實現它的抽象方法
7、當類實現了某個Java介面時,它必須實現介面中的所有抽象方法,否則這個類必須聲明為抽象類
8、不允許創建介面的實例(實例化),但允許定義介面類型的引用變數,該引用變數引用實現了這個介面的類的實例
9、一個類只能繼承一個直接的父類,但可以實現多個介面,間接的實現了多繼承.
六.Java介面和Java抽象類區別面向對象設計的重點在於抽象。抽象類與介面都位於繼承樹的上層。
相同點:
1、代表系統的抽象層,當一個系統使用一顆繼承樹上的類時,應該盡量把引用變數聲明為繼承樹的上層抽象類型,這樣可以提高兩個系統之間的送耦合
2、都不能被實例化
3、都包含抽象方法,這些抽象方法用於描述系統能提供哪些服務,但不包含方法體不同點:
1、最大的一個區別,就在於Java抽象類可以提供某些方法的部分實現,而Java介面不可以;這大概就是Java抽象類唯一的優點吧,但這個優點非常有用。
可以向抽象類里加入一個新的具體方法,所有的子類都自動得到這個方法;但Java介面里加入一個新方法,所有實現這個介面的類就無法成功通過編譯,必需手動給每個實現了該介面的類加上該方法的實現;
2、抽象類的實現只能由子類給出,也即該實現只能在抽象類定義的繼承的等級結構中;所以抽象類作為類型定義工具的效能大打折扣。
Java介面,任何一個實現了一個Java介面所規定的方法的類都可以具有這個介面的類型,而一個類可以實現任意多個Java介面,從而這個類就有了多種類型。
以上看出:Java介面是定義混合類型的理想工具,混合類表明一個類不僅僅具有某個主類型的行為,而且具有其他的次要行為。
3、結合1、2點中抽象類和Java介面的各自優勢,具精典的設計模式就出來了:
聲明類型的工作仍然由Java介面承擔,但是同時給出一個Java抽象類,且實現了這個介面,而其他同屬於這個抽象類型的具體類可以選擇實現這個Java介面,也可以選擇繼承這個抽象類,也就是說在層次結構中,Java介面在最上面,然後緊跟著抽象類,這下兩個的最大優點都能發揮到極至了。這個模式就是「預設適配模式」。
在Java語言API中用了這種模式,而且全都遵循一定的命名規范:Abstract+介面名。
七.使用介面和抽象類的總體原則:
1、用介面作為系統與外界交互的窗口站在外界使用者(另一個系統)的角度,介面向使用者承諾系統能提供哪些服務,站在系統本身的角度,介面制定系統必須實現哪些服務,介面是系統中最高層次的抽象類型.通過介面交互可以提高兩個系統之間的送耦合系統A通過系統B進行交互,是指系統A訪問系統B時,把引用變數聲明為系統B中的介面類型,該引用變數引用系統B中介面的實現類的實例。
publicinterfaceB{}
publicclassCimplementsB{}
publicclassA{Ba=newC();}
2、Java介面本身必須非常穩定,Java介面一旦制定,就不允許隨遇更加,否則對外面使用者及系統本身造成影響3、用抽象類來定製系統中的擴展點,抽象類來完成部分實現,還要一些功能通過它的子類來實現