Ⅰ java如何獲取webService最底層的傳輸數據
可以通過xfire,或者axis2來生成客戶端,然後調用websense服務端的代碼 就可以了啊。。你查一下 axis2 客戶端服務端代碼,研究下,就可以了。。你的公司難道沒有人使用過webservice????
你的功能就是一個客戶端。如果給你傳的是一個xml的話,你可以用dom4j,sax來解析報文就可以了。
Ⅱ 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());
}
}
}
Ⅲ 如下這是saop的消息,我想用Java訪問這個webservice介面,要怎麼實現
java訪問webservice,有兩種方法,1是可以用eclipse中,在項目中郵件new一個webservice的工件,然後輸入對應的wsdl,再直接調用工件中提供的介面去調用,2是自己編寫代碼,使用endpoint去調用
Ⅳ java調用webservice
String endpoint="http://localhost:8080/xxx/services/userservice?wsdl";
String id = "11111";
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(new URL(endpoint));
call.setOperationName("webservice方法名");
String res = (String) call.invoke(new Object[] {id});
看了你的描述覺得你把webservice想得太復雜化了,其實就是一個jar包和幾個類。
以上就是最簡單的webservice客戶端用法,和反射有點像。當然返回值不一定是String,返回的類型和格式要問服務提供方。
我用的是axis的,我不了解websphere什麼的,但是webservice就是那麼易用的東西。
Ⅳ java怎麼調用webservice介面
利用jdk web服務api實現,這里使用基於SOAP message的Web服務
使用xfire,我這里使用的是myeclipse集成的xfire進行測試的
利用xfire開發WebService,可以專有三種方法屬:
1一種是從javabean 中生成;
2 一種是從wsdl文件中生成;
3 還有一種是自己建立webservice
使用axis1.4調用webservice方法
前提條件:下載axis1.4包和tomcat伺服器,並將axis文件夾復制到tomcat伺服器的webapp文件夾中
使用axis2開發webservice
Ⅵ 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介面流程
給你看看以前寫的獲取電話號碼歸屬地的代碼的三種方法,然後你就懂了。
importjava.io.ByteArrayOutputStream;
importjava.io.FileInputStream;
importjava.io.IOException;
importjava.io.InputStream;
importjava.net.HttpURLConnection;
importjava.net.URL;
importorg.apache.commons.httpclient.HttpClient;
importorg.apache.commons.httpclient.HttpException;
importorg.apache.commons.httpclient.methods.PostMethod;
publicclassMobileCodeService{
publicvoidhttpGet(Stringmobile,StringuserID)throwsException
{
//http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx/getMobileCodeInfo?mobileCode=string&userID=string
URLurl=newURL("http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx/getMobileCodeInfo?mobileCode="+mobile+"&userID="+userID);
HttpURLConnectionconn=(HttpURLConnection)url.openConnection();
conn.setConnectTimeout(5000);
conn.setRequestMethod("GET");
if(conn.getResponseCode()==HttpURLConnection.HTTP_OK)//200
{
InputStreamis=conn.getInputStream();
=newByteArrayOutputStream();//
byte[]buf=newbyte[1024];
intlen=-1;
while((len=is.read(buf))!=-1)
{
//獲取結果
arrayOutputStream.write(buf,0,len);
}
System.out.println("Get方式獲取的數據是:"+arrayOutputStream.toString());
arrayOutputStream.close();
is.close();
}
}
publicvoidhttpPost(Stringmobile,StringuserID)throwsHttpException,IOException
{
//訪問路徑http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx/getMobileCodeInfo
//HttpClient訪問
HttpClienthttpClient=newHttpClient();
PostMethodpm=newPostMethod("http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx/getMobileCodeInfo");
pm.setParameter("mobileCode",mobile);
pm.setParameter("userID",userID);
intcode=httpClient.executeMethod(pm);
System.out.println("狀態碼:"+code);
//獲取結果
Stringresult=pm.getResponseBodyAsString();
System.out.println("獲取到的數據是:"+result);
}
publicvoidSOAP()throwsException
{
HttpClientclient=newHttpClient();
PostMethodmethod=newPostMethod("http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx");
//設置訪問方法的參數
method.setRequestBody(newFileInputStream("C:\soap.xml"));
method.setRequestHeader("Content-Type","text/xml;charset=utf-8");
intcode=client.executeMethod(method);
System.out.println("狀態碼:"+code);
//獲取結果
Stringresult=method.getResponseBodyAsString();
System.out.println("獲取到的數據是:"+result);
}
publicstaticvoidmain(String[]args)throwsException{
MobileCodeServicemcs=newMobileCodeService();
mcs.httpGet("18524012513","");
//mcs.httpPost("18524012513","");
//mcs.SOAP();
}
}
Ⅷ JAVA怎樣調用https類型的webservice
1.打開webService鏈接,右鍵屬性—》證書—》詳細信息—》復制到文件,保存cer格式的文件。
2. 復制下面的cmd命令,執行keytool命令,生成keystore文件,例如
c:\nciic.keystore
keytool -import -alias nciic -file c:\jswszx.cer -keystore c:\nciic.keystore
它會提示輸入密碼,隨便輸入,例如:123456,回車
4.他會提示是否信任這個認證,輸入Y,回車,指定目錄下就會生成nciic.keystore文件
它會提示輸入密碼,隨便輸入,例如:123456,回車
4.他會提示是否信任這個認證,輸入Y,回車,指定目錄下就會生成nciic.keystore文件
5.修改Java代碼
在調用介面方法之前,添加如下代碼:
System.setProperty("javax.NET.ssl.trustStore","c://nciic.keystore"); System.setProperty("java.protocol.handler.pkgs","com.sun.Net.ssl.internal.www.protocol");
java.security.Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
Ⅸ java調用webservice之後的數據處理
WebService返回的數來據都是Object[]類型自的,ArrayOfString也是ArrayOfObject的子類,所以呢,你必須解析出來,比如它定義了返回數據格式是:號碼,地區,郵編
那你做循環分別吧aos[0],aos[1],aos[2]拿出來,構成一個新的實體對象,在利用JSONArray.fromObject(Object)來轉換成json串,如果返回了多條記錄 就把實體對象加到list裡面,JSONArray.fromObject(list)來轉成json串
希望能幫到你~