javaweb接口,javaweb接口怎麼寫

本文目錄一覽:

java 如何實現webservice 怎麼調用接口

一、利用jdk web服務api實現,這裡使用基於SOAP message的Web服務 

 ①.首先建立一個Web services EndPoint: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(“

, hello);

 }

 }

 ②.使用apt編譯Hello.java(例:apt -d [存放編譯後的文件目錄] Hello.java ) ,

會生成jaws目錄

 ③.使用java Hello.Hello運行,然後將瀏覽器指向

就會出現下列顯示

 ④.使用wsimport生成客戶端使用如下:

wsimport -p . -keep 

這時,會在當前目錄中生成如下文件:

 ⑤.客戶端程序:

1 class HelloClient{

2 public static void main(String args[]) {

3 HelloService service = new HelloService();

4 Hello helloProxy = service.getHelloPort();

5 String hello = helloProxy.hello(“你好”);

6 System.out.println(hello);

7 }

8 }

以上方法還稍顯繁瑣,還有更加簡單的方法

二、使用xfire,我這裡使用的是myeclipse集成的xfire進行測試的利用xfire開發WebService,可以有三種方法:

 1. 一種是從javabean中生成;

 2. 一種是從wsdl文件中生成;

 3. 還有一種是自己建立webservice

步驟如下:

用myeclipse建立webservice工程,目錄結構如下:首先建立webservice接口,

代碼如下:

    1 package com.myeclipse.wsExample;

2 //Generated by MyEclipse

3

4 public interface IHelloWorldService {

5

    6 public String example(String message);

7

8 }

接着實現這個借口:

    1 package com.myeclipse.wsExample;

2 //Generated by MyEclipse

3

4 public class HelloWorldServiceImpl implements IHelloWorldService {

5

6 public String example(String message) {

7 return message;

8 }

9

10 }

 

修改 service.xml文件,加入以下代碼:

1 service

2 nameHelloWorldService/name

3 serviceClass

4 com.myeclipse.wsExample.IHelloWorldService

5 /serviceClass

6 implementationClass

7 com.myeclipse.wsExample.HelloWorldServiceImpl

8 /implementationClass

9  stylewrapped/style

10 useliteral/use

11 scopeapplication/scope

12/service

把整個項目部署到tomcat服務器中打開瀏覽器,輸入,可以看到如下:

然後再展開HelloWorldService後面的wsdl可以看到:

 客戶端實現如下:

   1 package com.myeclipse.wsExample.client;

2

3 import java.net.MalformedURLException;

4 import java.net.URL;

5

6 import org.codehaus.xfire.XFireFactory;

7 import org.codehaus.xfire.client.Client;

8 import org.codehaus.xfire.client.XFireProxyFactory;

9 import org.codehaus.xfire.service.Service;

   10 import org.codehaus.xfire.service.binding.ObjectServiceFactory;

11

12 import com.myeclipse.wsExample.IHelloWorldService;

13

14 public class HelloWorldClient {

15 public static void main(String[] args) throws MalformedURLException, Exception {

16 // TODO Auto-generated method stub

17 Service s=new ObjectServiceFactory().create(IHelloWorldService.class);

18 XFireProxyFactory xf=new XFireProxyFactory(XFireFactory.newInstance().getXFire());

19 String url=”

20

21 try

22 {

23

    24 IHelloWorldService hs=(IHelloWorldService) xf.create(s,url);

25 String st=hs.example(“zhangjin”);

26 System.out.print(st);

27 }

28 catch(Exception e)

29 {

30 e.printStackTrace();

31 }

32 }

33

34 }

  有時候我們知道一個wsdl地址,比如想用java客戶端引用net做得webservice,使用myeclipse引用,但是卻出現無法通過驗證的錯誤,這時我們可以直接在類中引用,步驟如下:

1. public static void main(String[] args) throws MalformedURLException, Exception {

2. // TODO Auto-generated method stub

java如何調用webservice接口

Java調用WebService可以直接使用Apache提供的axis.jar自己編寫代碼,或者利用Eclipse自動生成WebService Client代碼,利用其中的Proxy類進行調用。理論上是一樣的,只不過用Eclipse自動生成代碼省事些。

1、編寫代碼方式:

package com.yudun.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(“”, “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(“”, “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(“”, “string”), java.lang.String.class, false, false);

param.setOmittable(true);

oper.addParameter(param);

oper.setReturnType(new javax.xml.namespace.QName(“”, “string”));

oper.setReturnClass(java.lang.String.class);

oper.setReturnQName(new javax.xml.namespace.QName(“”, “return”));

oper.setStyle(org.apache.axis.constants.Style.WRAPPED);

oper.setUse(org.apache.axis.constants.Use.LITERAL);

oper.addFault(new org.apache.axis.description.FaultDesc(

new javax.xml.namespace.QName(“發布的wsdl里的targetNamespace里的url”, “Exception”),

“Exception”,

new javax.xml.namespace.QName(“發布的wsdl里的targetNamespace里的url”, “Exception”),

true

));

call.setOperation( oper );

call.setOperationName(new javax.xml.namespace.QName(“發布的wsdl里的targetNamespace里的url”, “opName”));

//調用Web Service,傳入參數

String res = ( String ) call.invoke( new Object[](“arg0″,”arg1”));

System.out.println(“===============”);

return res;

}

/**

* @param args

*/

public static void main(String[] args) {

try {

System.out.println(getResult());

} catch (MalformedURLException e) {

e.printStackTrace();

} catch (RemoteException e) {

e.printStackTrace();

} catch (ServiceException e) {

e.printStackTrace();

} catch (SOAPException e) {

e.printStackTrace();

}

}

}

2、利用Eclipse自動生成WebService client代碼就容易多了:(由於還不會發圖片,就用語言描述了,大家酬和看吧。。。)

首先,new project,選擇other,在輸入框中輸入Web Service Client,選中搜索後的結果,點擊Next,在Service definition中輸入 WebService的發布地址,點擊Finish

這樣,WebService Client代碼已經生成好了。

接下來寫一個Test類,在main函數中輸入如下代碼:

String endpoint = “服務器的WebService的地址”;

YourWebServiceNameProxy umsp = new YourWebServiceNameProxy (endpoint);

try {

String resultStr = umsp.opMethod(“arg0″,”arg1”);

System.out.println(resultStr);

} catch (Exception e) {

System.out.println(“異常”);

e.printStackTrace();

} catch (RemoteException e) {

System.out.println(“RemoteException異常”);

e.printStackTrace();

}

如果還有疑問的話還有視頻,如果對你有幫助請採納!

JavaWeb如何通過接口,找到接口所在的包和類

spring aop 攔截controller中所有方法

可以在方法執行完成後做些東西,比如在控制台打印類名和方法名

import org.aspectj.lang.JoinPoint;import org.aspectj.lang.annotation.AfterReturning;import org.aspectj.lang.annotation.Aspect;import org.springframework.stereotype.Component;@Aspect@Componentpublic class PrintInterfaceNameAspect { @AfterReturning(value = “execution(* com.demo.web.controller..*(..))”) //替換成你自己的controller包名

public void afterReturnAdvice(JoinPoint point) { //類名

System.out.println(point.getSignature().getDeclaringTypeName()); //方法名

System.out.println(point.getSignature().getName());

}

}

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=\”\” xmlns:xsd=\”\” xmlns:soap12=\”\”” +

“soap12:Body” +

” getCountryCityByIp xmlns=\”\”” +

” theIpAddress219.137.167.157/theIpAddress” +

” /getCountryCityByIp” +

” /soap12:Body” +

“/soap12:Envelope”;

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

PostMethod postMethod = new PostMethod(“”);

然後把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服務的返回值。

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 = “”;

//直接引用遠程的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());

}

}

}

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/201010.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-06 11:29
下一篇 2024-12-06 11:29

相關推薦

  • Java 監控接口返回信息報錯信息怎麼處理

    本文將從多個方面對 Java 監控接口返回信息報錯信息的處理方法進行詳細的闡述,其中包括如何捕獲異常、如何使用日誌輸出錯誤信息、以及如何通過異常處理機制解決報錯問題等等。以下是詳細…

    編程 2025-04-29
  • Python接口自動化測試

    本文將從如下多個方面對Python編寫接口自動化進行詳細闡述,包括基本介紹、常用工具、測試框架、常見問題及解決方法 一、基本介紹 接口自動化測試是軟件測試中的一種自動化測試方式。通…

    編程 2025-04-27
  • Jadoor門鎖開發接口接入指南

    本文將從多個方面詳細介紹如何將門鎖接入Jadoor平台的開發接口,方便開發者們快速實現門鎖遠程控制、開鎖記錄查看等功能。 一、Jadoor門鎖開發接口簡介 Jadoor是一款用於密…

    編程 2025-04-27
  • 後端接口設計開發經驗分享

    在受到前端某些限制或特殊需求時,後端接口的設計和開發顯得尤為重要。下面從以下幾個方面進行講述。 一、命名規範 合理的命名規範可以大大提高接口的可讀性和可維護性。以下是一些命名規範的…

    編程 2025-04-27
  • 期貨數據接口 Python:打通數字資產交易數據的關鍵

    本文將從以下幾個方面討論期貨數據接口 Python: 一、數據接口簡介 期貨數據接口是指為期貨從業人員提供用於獲取歷史、實時及未來交易數據的工具。Python是一種常用的編程語言,…

    編程 2025-04-27
  • 如何快速發布http接口

    想要快速發布http接口,可以從以下幾個方面入手。 一、選擇合適的框架 選擇合適的框架對於快速發布http接口非常重要。目前比較受歡迎的框架有Flask、Django、Tornad…

    編程 2025-04-27
  • Javaweb 接口返回數據的定義與實現

    本文將介紹 javaweb 如何定義接口返回數據,並提供相應的代碼示例。 一、接口返回數據的定義 在 javaweb 開發中,我們經常需要通過接口返回數據。接口返回的數據格式通常是…

    編程 2025-04-27
  • Postman接口自動化

    一、安裝和使用Postman Postman是一個強大的API測試工具,可以使用它來測試各種類型的API請求和響應。在進行接口自動化測試之前,首先需要安裝和使用Postman。以下…

    編程 2025-04-25
  • POST接口測試完整指南

    一、POST接口測試介紹 POST接口測試是一種測試的方式,主要用於測試Web應用程序。它是通過POST HTTP方法發送HTTP請求到Web服務器並且對服務器的響應進行驗證的一種…

    編程 2025-04-25
  • 電費充值API接口詳解

    一、API介紹 電費充值API接口是一種允許用戶通過其他平台或應用程序進行電費充值的接口,方便用戶快速充值電費。 通過電費充值API接口,用戶可以通過其他應用程序或平台,直接將資金…

    編程 2025-04-25

發表回復

登錄後才能評論