1、java客戶端如何調用服務端的介面?
如果你的data格式是{area:」xxx「,sourceType:」xxx「,factoryName:」xxxx「}這樣子 在你的success方法里 通過data.area獲取內 area的值,以此容類推
2、現有一台Javaweb伺服器,一台其他程序伺服器。如何從實現相互調用傳值?
一台其他程序伺服器提供相應的請求介面,一台Javaweb伺服器調用一台其他程序伺服器的介面。一台個人電腦訪問一台Javaweb伺服器上的web端,點擊按鈕
3、JAVA怎麼調用介面?
String sendPost(String jsonStr, String path)
throws IOException {
byte[] data = jsonStr.getBytes();
java.net.URL url = new java.net.URL(path);
java.net.HttpURLConnection conn =
(java.net.HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setConnectTimeout(5 * 1000);// 設置連接超時時間為5秒
conn.setReadTimeout(20 * 1000);// 設置讀取超時時間為20秒
// 使用 URL 連接進行輸出,則將 DoOutput標志設置為 true
conn.setDoOutput(true);
conn.setRequestProperty("Content-Type", "text/xml;charset=UTF-8");
//conn.setRequestProperty("Content-Encoding","gzip");
conn.setRequestProperty("Content-Length", String.valueOf(data.length));
OutputStream outStream = conn.getOutputStream();// 返回寫入到此連接的輸出流
outStream.write(data);
outStream.close();//關閉流
String msg = "";// 保存調用http服務後的響應信息
// 如果請求響應碼是200,則表示成功
if (conn.getResponseCode() == 200) {
// HTTP服務端返回的編碼是UTF-8,故必須設置為UTF-8,保持編碼統一,否則會出現中文亂碼
BufferedReader in = new BufferedReader(new InputStreamReader(
(InputStream) conn.getInputStream(), "UTF-8"));
msg = in.readLine();
in.close();
}
conn.disconnect();// 斷開連接
return msg;
}
4、java如何調用webservice介面
Java通過WSDL文件來調用webservice直接調用模式如下:
import java.util.Date;
import java.text.DateFormat;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import javax.xml.namespace.QName;
import java.lang.Integer;
import javax.xml.rpc.ParameterMode;
public class caClient {
public static void main(String[] args) {
try {
String endpoint = "http://localhost:8080/ca3/services/caSynrochnized?wsdl";
//直接引用遠程的wsdl文件
//以下都是套路
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(endpoint);
call.setOperationName("addUser");//WSDL裡面描述的介面名稱
call.addParameter("userName", org.apache.axis.encoding.XMLType.XSD_DATE,
javax.xml.rpc.ParameterMode.IN);//介面的參數
call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);//設置返回類型
String temp = "測試人員";
String result = (String)call.invoke(new Object[]{temp});
//給方法傳遞參數,並且調用方法
System.out.println("result is "+result);
}
catch (Exception e) {
System.err.println(e.toString());
}
}
}
5、java遠程調用介面的原理和範例,謝謝
Java 遠程處理
Java遠程方法調用(RMI)提供了Java程序語言的遠程通訊功能,這種特性使客戶機上運行的程序可以調用遠程伺服器上的對象,使Java編程人員能夠在網路環境中分布操作。
創建一個簡單的Java分布式遠程方法調用程序可以按以下幾個步驟操作,
一、定義遠程介面:
在 Java 中,遠程對象是實現遠程介面的類的實例, 遠程介面聲明每個要遠程調用的方法。在需要創建一個遠程對象的時候,我們通過傳遞一個介面來隱藏基層的實施細節,客戶通過介面句柄發送消息即可。
遠程介面具有如下特點:
1) 遠程介面必須為public屬性。如果不這樣,除非客戶端與遠程介面在同一個包內,否則 當試圖裝入實現該遠程介面的遠程對象時,調用會得到錯誤結果。
2) 遠程介面必須擴展介面java.rmi.Remote。
3) 除與應用程序本身特定的例外之外,遠程介面中的每個方法都必須在自己的throws從句中 聲明java.rmi.RemoteException。(或 RemoteException 的父類)。
4) 作為參數或返回值傳遞的一個遠程對象(不管是直接,還是本地對象中嵌入)必須聲明為遠 程介面,而不應聲明為實施類。
下面是遠程介面的定義
[java] view plaincopy
package test;
import java.rmi.Remote;
import java.rmi.RemoteException;
import java.math.BigInteger;
public interface Fib extends Remote {
public int getFib(int n) throws RemoteException;
// public BigInteger getFib(BigInteger n) throws RemoteException;
}
二、實現遠程介面:
遠程對象實現類必須擴展遠程對象java.rmi.UnicastRemoteObject類,並實現所定義的遠程介面。遠程對象的實現類中包含實現每個遠程介面所指定的遠程方法的代碼。這個類也可以含有附加的方法,但客戶只能使用遠程介面中的方法。因為客戶是指向介面的一個句柄,而不是它的哪個類。必須為遠程對象定義構造函數,即使只准備定義一個默認構造函數,用它調用基礎類構造函數。因為基礎類構造函數可能會拋出 java.rmi.RemoteException,所以即使別無它用必須拋出java.rmi.RemoteException例外。
以下是遠程對象實現類的聲明:
[java] view plaincopy
package test;
import java.math.BigInteger;
import java.rmi.*;
import java.rmi.server.UnicastRemoteObject;
public class FibImp extends UnicastRemoteObject implements Fib {
public FibImp() throws RemoteException {
super();
}
public int getFib(int n) throws RemoteException {
return n+2;
}
}
三、編寫伺服器類:
包含 main 方法的類可以是實現類自身,也可以完全是另一個類。下面通過RmiSampleServer 來創建一個遠程對象的實例,並通過java.rmi.registry.LocateRegistry類的createRegistry 方法從指定埠號啟動注冊服務程序,也可以通過執行 rmiregistry 命令啟動注冊服務程序,注冊服務程序的預設運行埠為 1099。必須將遠程對象名字綁定到對遠程對象的引用上: Naming.rebind("//localhost:8808/SAMPLE-SERVER" , Server);
以下是伺服器類的聲明:
[java] view plaincopy
package test;
import java.net.MalformedURLException;
import java.rmi.Naming;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
public class FibonacciServer {
/**
* @param args
*/
public static void main(String[] args) {
try {
LocateRegistry.createRegistry(8804);
FibImp f = new FibImp();
// 注冊到 registry 中
Naming.rebind("//localhost:8804/SAMPLE-SERVER", f);
System.out.println("fib server ready");
} catch (RemoteException re) {
System.out.println("Exception in FibonacciImpl.main: " + re);
} catch (MalformedURLException e) {
System.out.println("MalformedURLException " + e);
}
}
}
四、編寫使用遠程服務的客戶機類:
客戶機類的主要功能有兩個,一是通過Naming.lookup方法來構造注冊服務程序 stub 程序實例,二是調用伺服器遠程對象上的遠程方法。
以下是客戶端類的聲明:
[java] view plaincopy
package testClient;
import test.Fib;
import java.math.BigInteger;
import java.net.MalformedURLException;
import java.rmi.Naming;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;
public class FibClient {
/**
* @param args
*/
public static void main(String[] args) {
String url = "//localhost:8804/SAMPLE-SERVER";
try {
Fib calc = (Fib) Naming.lookup(url);
for (int i = 0; i < 10; ++i) {
int f = calc.getFib(i);
System.out.println(f);
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (RemoteException e) {
e.printStackTrace();
} catch (NotBoundException e) {
e.printStackTrace();
}
}
}
6、java spring mvc通過httpclient調用別人的介面服務
主要有以下幾點原因:
1、網路不通,在調用的機器上評一下對方伺服器ip或域名;專
2、如果屬介面url用的域名,排查是不是DNS問題,這種問題使用方法1時ping域名應該是不通的,直接ping ip可以通;
3、請求介面時設置的超時時間太短,httpclient可以設置超時時間,如果網路不穩定的話會導致請求通信還沒有完成就達到超時時間;
4、介面url錯誤,這種理論上會報404,但是如果人家要求使用https,而你用的http協議,有可能導致超時;
5、對方介面肯定有許可權驗證,看是以什麼方式鑒權,如果用的除token以外的方式鑒權,有可能會鑒權出錯一直重試而導致超時;
6、代碼錯誤,這種是你客戶端有問題,尤其你提到使用了連接池,確保你從連接池獲取的鏈接是可用的,鏈接使用完成後需要返還給池,記住是返還而不是關閉。使用連接池有一個缺點,就是對方介面如果不支持長連接的話,你使用連接池是沒有效果的,可能一個連接使用一兩次就連接不上了,需要重新創建鏈接。一般介面提供方都會提供demo,可以使用他們提供的demo嘗試請求看通不通。
暫時想到可能性只有這么多,你也可以自己查詢相關資料。
7、怎麼用Java寫一個從本機訪問到介面?
可以使用 socket 。
如這樣:
socket = new Socket("192.168.1.100", 1234);
具體用法看這個實例:從伺服器讀取消息
8、別人用java寫好了介面從伺服器能獲取到值,我該怎麼把這個值傳到網頁
$.ajax({
type : 'POST',
url : 'tools_line.do?method=delMap',
type:'json',
data : {
id : '123'
},
success : function(data) {
},
error : function() {
}
})
介面一般都是直接返回json數據到前台的。
url :調用介面;
data:傳參;
success:function(data){}:這個data就是介面返專回的json數據。
希望能屬幫到你!加油!
9、Java裡面怎麼A伺服器的介面讀取B伺服器的文件啊?
直接讀取肯定是沒法的,需要A與B通訊,請求B伺服器的文件
10、java如何調用介面方式
如果是已經有了URL的介面
URL url = new URL(介面);
創建鏈接對方介面對象
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
設置請求屬性
conn.setRequestProperty("accept", "*/*");
conn.setRequestProperty("connection", "Keep-Alive");
conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)");
設置是否向httpUrlConnection輸出,內設置是否從容httpUrlConnection讀入
conn.setDoOutput(true);
conn.setDoInput(true);
最後斷開鏈接,保證速度
conn.disconnect();
基本就這樣用需要更多的就要自己看api了