導航:首頁 > 編程語言 > java遠程調用webservice

java遠程調用webservice

發布時間:2022-10-24 16:31:38

『壹』 怎麼用java通過wsdl地址調用WebService求代碼

/**
*description:調用運營商充值介面方法
*author:xuxiaoguai
*2015-12-110:32:04
*@return返回值參數代碼
*/
publicStringinvokeRemoteFuc(){
Stringendpoint="http://^^^^";
Stringresult="noresult!";
System.out.println(result);

Serviceservice=newService();
Callcall;

Object[]object=newObject[4];//Object用來存儲方法的參數
object[0]="XXX";//相應的參數,由於保密
object[1]="XXX";
object[2]="XXX";
object[3]="10M";

try{
call=(Call)service.createCall();
call.setTargetEndpointAddress(endpoint);//遠程調用路徑
call.setOperationName("methodname");//調用的方法名

//設置參數名:
call.addParameter("XX",//參數名
XMLType.XSD_STRING,//參數類型:String
ParameterMode.IN);//參數模式:'IN'or'OUT'
call.addParameter("XX",XMLType.XSD_STRING,ParameterMode.INOUT);
call.addParameter("XX",XMLType.XSD_STRING,ParameterMode.INOUT);
call.addParameter("XX",XMLType.XSD_STRING,ParameterMode.INOUT);

//設置返回值類型:
call.setReturnType(XMLType.XSD_STRING);//返回值類型:String
result=(String)call.invoke(object);//遠程調用
}catch(ServiceExceptione){
e.printStackTrace();
}catch(RemoteExceptione){
e.printStackTrace();
}
returnresult;
}


//測試充值介面方法-xuxiaoguai-2015年11月30日17:13:04
publicstaticvoidmain(String[]args){
BusinessControllert=newBusinessController();
Stringresult=t.invokeRemoteFuc();
System.out.println(result);
}

『貳』 java調用webservice介面具體怎麼調用

Java調用WebService可以直接使用Apache提供的axis.jar自己編寫代碼,或者利用Eclipse自動生成WebService Client代碼,利用其中的Proxy類進行調用。理論上是一樣的,只不過用Eclipse自動生成代碼省事些。
1、編寫代碼方式:
package com.yun.test;
import java.rmi.RemoteException;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.message.PrefixedQName;
import org.apache.axis.message.SOAPHeaderElement;
import com.cezanne.golden.user.Exception;
import com.cezanne.golden.user.UserManagerServiceProxy;
import javax.xml.namespace.QName;
import java.net.MalformedURLException;
import javax.xml.rpc.ServiceException;
import javax.xml.soap.Name;
import javax.xml.soap.SOAPException;

public class testWebService {
public static String getResult() throws ServiceException, MalformedURLException, RemoteException, SOAPException
{
//標識Web Service的具體路徑
String endpoint = "WebService服務地址";
// 創建 Service實例
Service service = new Service();
// 通過Service實例創建Call的實例
Call call = (Call) service.createCall();
//將Web Service的服務路徑加入到call實例之中.
call.setTargetEndpointAddress( new java.net.URL(endpoint) );//為Call設置服務的位置
// 由於需要認證,故需要設置調用的SOAP頭信息。
Name headerName = new PrefixedQName( new QName("發布的wsdl里的targetNamespace里的url", "string_itemName") );
org.apache.axis.message.SOAPHeaderElement header = new SOAPHeaderElement(headerName);
header.addTextNode( "blablabla" );
call.addHeader(header);

// SOAPHeaderElement soapHeaderElement = new SOAPHeaderElement("發布的wsdl里的targetNamespace里的url", "SoapHeader");
// soapHeaderElement.setNamespaceURI("發布的wsdl里的targetNamespace里的url");
// try
// {
// soapHeaderElement.addChildElement("string_itemName").setValue("blablabla");
// }
// catch (SOAPException e)
// {
// e.printStackTrace();
// }
// call.addHeader(soapHeaderElement);
//調用Web Service的方法
org.apache.axis.description.OperationDesc oper;
org.apache.axis.description.ParameterDesc param;
oper = new org.apache.axis.description.OperationDesc();
oper.setName("opName");
param = new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "arg0"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"), java.lang.String.class, false, false);
param.setOmittable(true);
oper.addParameter(param);
param = new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "arg1"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"), java.lang.String.class, false, false);
param.setOmittable(true);
oper.addParameter(param);
param = new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "arg2"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"), java.lang.String.class, false, false);
param.setOmittable(true);
oper.addParameter(param);

『叄』 java怎麼調用webservice

1.使用HttpClient
用到的jar文件:commons-httpclient-3.1.jar
方法:
預先定義好Soap請求數據,可以藉助於XMLSpy Professional軟體來做這一步生成。

String soapRequestData = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
"<soap12:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap12=\"http://www.w3.org/2003/05/soap-envelope\">" +
"<soap12:Body>" +
" <getCountryCityByIp xmlns=\"http://WebXml.com.cn/\">" +
" <theIpAddress>219.137.167.157</theIpAddress>" +
" </getCountryCityByIp>" +
" </soap12:Body>" +
"</soap12:Envelope>";

然後定義一個PostMethod,這時需要指定web服務的Url;

PostMethod postMethod = new PostMethod(「http://www.webxml.com.cn/WebServices/IpAddressSearchWebService.asmx」);

然後把Soap請求數據添加到PostMethod中

byte[] b = soapRequestData.getBytes("utf-8");
InputStream is = new ByteArrayInputStream(b,0,b.length);
RequestEntity re = new InputStreamRequestEntity(is,b.length,"application/soap+xml; charset=utf-8");
postMethod.setRequestEntity(re);

最後生成一個HttpClient對象,並發出postMethod請求

HttpClient httpClient = new HttpClient();
statusCode = httpClient.executeMethod(postMethod);
String soapRequestData = postMethod.getResponseBodyAsString();

soapRequestData就是調用web服務的Soap響應數據,是xml格式的,可以通過解析soapRequestData來獲得調用web服務的返回值。
2.使用Xfire
用到的jar文件xfire-all-1.2.4.jar, jdom-1.0.jar
方法:
定義一個Client對象,指定web服務的wsdl的地址

Client c = new Client(new URL(「http://www.webxml.com.cn/WebServices/IpAddressSearchWebService.asmx?wsdl」));

調用Client對象的invoke方法,指定web服務的方法名,和參數,返回值是一個Object型的數組。
下面代碼調用getVersionTime方法,這個方法沒有參數用所以後一個參數使用new Object[0]。

Object[] results = c.invoke(「getVersionTime」, new Object[0]);

3.使用axis2
下載axis2-1.4
方法:
打開控制台,進入axis2-1.4/bin目錄

wsdl2java.bat -uri http://www.webxml.com.cn/WebServices/IpAddressSearchWebService.asmx?wsdl -p ws.clinet.axis2

上述命令執行完後,會在當前目錄下生成一個src目錄,在src\ ws\ clinet\ axis2目錄里生成XXXXCallbackHandler.java和XXXXStub.java兩個文件。
wsdl2java 會根據wsdl文件生成web服務的調用介面,參數類,返回值的類。
在調用webservice的時候直接實例化一個XXXXStub的對象,然後調用web服務的方法就可以了。
4. 總結
針對某種工具搭建的Web Service服務可能有與其對應的更簡單的調用方法,在這里沒有做描述,上述的調用web服務的方法是通用的。
上述三種方法中使用httpclient應該是比較靈活,但是開發效率低,難度大,使用Xfire和axis2比較容易,開發速度快,但是axis2通用性不好,有的web服務用axis2不好用。httpclient和Xfire通用性比較好,鑒於以上特點推薦使用Xfire。

『肆』 java調用webservice介面具體怎麼調用

使用HttpClient
用到的jar文件:commons-httpclient-3.1.jar
方法:
預先定義好Soap請求數據,可以藉助於XMLSpy Professional軟體來做這一步生成。

String soapRequestData = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
"<soap12:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap12=\"http://www.w3.org/2003/05/soap-envelope\">" +
"<soap12:Body>" +
" <getCountryCityByIp xmlns=\"http://WebXml.com.cn/\">" +
" <theIpAddress>219.137.167.157</theIpAddress>" +
" </getCountryCityByIp>" +
" </soap12:Body>" +
"</soap12:Envelope>";

然後定義一個PostMethod,這時需要指定web服務的Url;

PostMethod postMethod = new PostMethod(「http://www.webxml.com.cn/WebServices/IpAddressSearchWebService.asmx」);

然後把Soap請求數據添加到PostMethod中

byte[] b = soapRequestData.getBytes("utf-8");
InputStream is = new ByteArrayInputStream(b,0,b.length);
RequestEntity re = new InputStreamRequestEntity(is,b.length,"application/soap+xml; charset=utf-8");
postMethod.setRequestEntity(re);

最後生成一個HttpClient對象,並發出postMethod請求

HttpClient httpClient = new HttpClient();
statusCode = httpClient.executeMethod(postMethod);
String soapRequestData = postMethod.getResponseBodyAsString();

soapRequestData就是調用web服務的Soap響應數據,是xml格式的,可以通過解析soapRequestData來獲得調用web服務的返回值。

『伍』 怎樣使用wsdl2java調用webservice

Java通過WSDL文件來調用webservice: 注意,以下的代碼並沒有經過真正的測試,只是說明這些情況,不同版本的Axis相差很大,大家最好以apache網站上的例子為准,這里僅僅用於說明其基本用法。 1,直接AXIS調用遠程的web service 這種方法比較適合.

『陸』 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());

}

}

}

『柒』 java實現調用webserver

一、利用jdk web服務api實現,這里使用基於 SOAP message 的 Web 服務
1.首先建立一個Web services EndPoint:

Java代碼

package Hello;
import javax.jws.WebService;
import javax.jws.WebMethod;
import javax.xml.ws.Endpoint;

@WebService
public class Hello {

@WebMethod
public String hello(String name) {
return "Hello, " + name + "\n";
}

public static void main(String[] args) {
// create and publish an endpoint
Hello hello = new Hello();
Endpoint endpoint = Endpoint.publish("http://localhost:8080/hello", hello);
}
}

Java代碼

package Hello;
import javax.jws.WebService;
import javax.jws.WebMethod;
import javax.xml.ws.Endpoint;

@WebService
public class Hello {

@WebMethod
public String hello(String name) {
return "Hello, " + name + "\n";
}

public static void main(String[] args) {
// create and publish an endpoint
Hello hello = new Hello();
Endpoint endpoint = Endpoint.publish("http://localhost:8080/hello", hello);
}
}

2.使用 apt 編譯 Hello.java(例:apt -d [存放編譯後的文件目錄] Hello.java ) ,會生成 jaws目錄
3.使用java Hello.Hello運行,然後將瀏覽器指向http://localhost:8080/hello?wsdl就會出現下列顯示
4.使用wsimport 生成客戶端
使用如下:wsimport -p . -keep http://localhost:8080/hello?wsdl
5.客戶端程序:

Java代碼

class HelloClient{
public static void main(String args[]) {
HelloService service = new HelloService();
Hello helloProxy = service.getHelloPort();
String hello = helloProxy.hello("你好");
System.out.println(hello);
}
}

Java代碼

class HelloClient{
public static void main(String args[]) {
HelloService service = new HelloService();
Hello helloProxy = service.getHelloPort();
String hello = helloProxy.hello("你好");
System.out.println(hello);
}
}

『捌』 java app或java web實現調用遠程JS和webservice的思路

使用windows定時任務運行批處理程序(bat)打開固定頁面來實現定時調用。
頁面中可以在打開頁面時直接調用js或者webservice介面。和定時調用action原理一樣

『玖』 用java調用https webservice,該怎麼處理

publicStringsendPost(Stringurl,Stringparam){
StringrequestData=param;//參數
StringrequsetString=url;//遠程介面地址
//'tcare.
//信任任何證書
X509TrustManagertrustManager=newX509TrustManager(){

publicvoidcheckClientTrusted(X509Certificate[]chain,StringauthType)throwsCertificateException{

//Don'tdoanything.
}


publicvoidcheckServerTrusted(X509Certificate[]chain,StringauthType)throwsCertificateException{

//Don'tdoanything.
}


publicX509Certificate[]getAcceptedIssuers(){

//Don'tdoanything.
returnnull;
}

};
//把信任證書放到ssl中
SSLContextsslcontext;
Stringresult="";
try{
sslcontext=SSLContext.getInstance("SSL");
sslcontext.init(null,newTrustManager[]{trustManager},null);

//
//(
//,amethodwhichdoesn't
//existanywhereIcanfind,buthey-ho).
SSLSocketFactorysf=newSSLSocketFactory(sslcontext);
sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);

DefaultHttpClienthttpclient=newDefaultHttpClient();
httpclient.getConnectionManager().getSchemeRegistry().register(newScheme("https",sf,VariableTool.HTTP_NUM));

HttpPosthttpPost=newHttpPost(requsetString);

//執行https請求
httpPost.setHeader("Authorization","basic"+"dGNsb3VkYWRtaW46dGNsb3VkMTIz");
httpPost.setHeader("Content-type","application/xml");

StringEntityreqEntity;

//將請求參數封裝成HttpEntity
reqEntity=newStringEntity(requestData,"UTF-8");
BufferedHttpEntitybhe=newBufferedHttpEntity(reqEntity);
httpPost.setEntity(bhe);
HttpResponseresponse=httpclient.execute(httpPost);
HttpEntityresEntity=response.getEntity();
InputStreamReaderreader=newInputStreamReader(resEntity.getContent());

char[]buff=newchar[1024];
intlength=0;
while((length=reader.read(buff))!=-1){
result+=newString(buff,0,length);
}

logger.debug("調用ws介面返回:"+result);
httpclient.getConnectionManager().shutdown();

}catch(Exceptione){
e.printStackTrace();
return"";
}
returnresult;
}
result就是遠程介面返回的介面

『拾』 java調用 webservice 介面怎麼調用

太簡單了,這個跟Java訪問url是一樣的:

	/**
*程序中訪問http數據介面
*@paramurlStrwebService地址地址
*/
(StringurlStr){
/**網路的url地址*/
URLurl=null;
/**http連接*/
HttpURLConnectionhttpConn=null;
/**//**輸入流*/
BufferedReaderin=null;
StringBuffersb=newStringBuffer();
try{
url=newURL(urlStr);
in=newBufferedReader(newInputStreamReader(url.openStream(),"UTF-8"));
Stringstr=null;
while((str=in.readLine())!=null){
sb.append(str);
}
}catch(Exceptionex){
ex.printStackTrace();
}finally{
try{
if(in!=null){
in.close();
}
}catch(IOExceptionex){
ex.printStackTrace();
}
}
Stringresult=sb.toString();
System.out.println(result);
returnresult;
}

然後解析字元串就好了。是不是很簡單

閱讀全文

與java遠程調用webservice相關的資料

熱點內容
皓強工具解壓步驟 瀏覽:688
部隊抗洪搶險命令範文 瀏覽:886
歐姆龍plc編程軟體使用教程 瀏覽:592
ai文件pdf 瀏覽:911
騰訊雲伺服器掛載混合雲 瀏覽:758
智能小車用什麼單片機 瀏覽:463
java怎麼給窗口關閉 瀏覽:940
列舉51單片機的定址方式 瀏覽:706
剪輯app怎麼寫長篇文字 瀏覽:400
app專屬流量過月租怎麼不更新 瀏覽:654
王者程序員都有誰 瀏覽:76
給牛換腳掌解壓 瀏覽:387
圍棋有多少種演算法 瀏覽:602
unity資源包在哪個文件夾 瀏覽:704
阿里雲伺服器遠程鏈接不成功 瀏覽:482
文件系統pdf 瀏覽:767
原神安卓區服什麼意思 瀏覽:37
貝殼app怎麼線上發布 瀏覽:161
如何挑選安卓系統機頂盒 瀏覽:54
安卓快充使用有什麼注意事項 瀏覽:911