[자바 기반] - 웹 서비스 인 터 페 이 스 를 호출 하 는 방법

5491 단어 JavaWebService
보통 웹 서 비 스 를 방문 하 는 방법 은 세 가지 가 있 습 니 다.
  • 테스트 시 사용
  • 전화 방문
  • 직접 클 라 이언 트 방문
  • 두 번 째 와 세 번 째 가 가장 많이 사용 되 는 코드 를 드 립 니 다.
    인터페이스 안의 방법 은 2 가지 가 있 습 니 다. 1. Public Student addStudent (Student stu) throws Exception;2、public Student removeStu(int id)throws Exception;
    1. 웹 서비스 프로젝트 에서 테스트 사용
    package test;
    
    import org.codehaus.xfire.XFireFactory;
    import org.codehaus.xfire.client.XFireProxyFactory;
    import org.codehaus.xfire.service.Service;
    import org.codehaus.xfire.service.binding.ObjectServiceFactory;
    
    import service.interfaces.MyService;
    import bean.Student;
    
    public class TestClient {
    /**
     * @       :        !
     * @     :yang
     * @     : 2015-7-28 
     * @     :
     * @  : @param args   
     * @return void   
     * @throws
     */
    	public static void main(String[] args) {
    		//       service,         ,                 
    		Service srcModel = new ObjectServiceFactory().create(MdServer.class);
    		//      ,               
    		XFireProxyFactory factory = new XFireProxyFactory(XFireFactory.newInstance().getXFire());
    		//webservice  ,    wsdl,     tomcat   ,        ,    ?wsdl
    		//  :http://localhost:8080/MyService/services/MyService?wsdl
    		String RectServiceUrl = "http://localhost:8080/MyService/services/MyService";//      ,    
    		/http://ip  /   /services/   
    		try {
    			//            
    			MyService ms = (MyService)factory.create(srcModel,RectServiceUrl);
    			//         
    			//        
    			Student st=new Student(null,"  ","     ",0);//   0,           ,   1
    		    Student result=ms.addStudent(st);
    		    System.out.println("          :"+result);//   webService      
    			
    			//        
    			Student result2=ms.removeStu(22);
    			System.out.println("          :"+result2);
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    	}
    }
    

    2. 다른 항목 에서 서버 에 배 치 된 인 터 페 이 스 를 호출 합 니 다. (실제 배 치 된 것 은 war 패키지 입 니 다)
    패키지 가 져 오기 기억 하기: axis - 14 http://download.csdn.net/download/xiaoyong8823/4391971
    package test;
    
    import javax.servlet.http.HttpServletResponse;
    import javax.xml.rpc.ParameterMode;
    
    import org.apache.axis.client.Call;
    import org.apache.axis.client.Service;
    import org.apache.axis.encoding.XMLType;
    
    import org.junit.Test;
    import bean.Student;
    /**
     * @       :        !
     * @     :yang
     * @     : 2015-7-28 
     * @     :
     * @  : @param args   
     * @return void   
     * @throws
     */
    
    public class TestCall {
        @Test
    	//          
    	public String xslsAdd(){
    		String str="";
    		try{
    			//webservice    ,       
    			String endPoint="http://localhost:8080/MyService/services/MyService";
    			//      
    			Service service=new Service();
    			Call call=(Call)service.createCall();
    			call.setTargetEndpointAddress(endPoint);
    			//      
    			call.setOperationName("addStudent");//               
    			call.addParameter("id", XMLType.XSD_INTEGER,ParameterMode.IN );
    			call.addParameter("name", XMLType.XSD_STRING,ParameterMode.IN );
    			call.addParameter("address",XMLType.XSD_STRING,ParameterMode.IN );
    			call.addParameter("status",XMLType.XSD_INT,ParameterMode.IN );
    		
    	       /** 
                 *        -         SendExResp-     ws    ,       , 
                 *       org.w3c.dom.Element.class,    org.xml.sax.SAXException: 
                 * SimpleDeserializer   encountered a child element, which is NOT expected  。 
                 *  :       ,       ws      , :call.setReturnClass(String[].class); 
                 */  
    			call.setReturnClass(org.w3c.dom.Element.class); 
    			//    ,    ,           
    			Integer  id=null;
    			String name="  ";
    			String address="     ";
    			String status=0;
    	        
    		    //          :        HTTP   SOAPAction             (     )
                call.setUseSOAPAction(true);  
                //        String  ,       ,      w3cl   
                call.setReturnClass(String.class);
                call.setSOAPActionURI("addStudent");  
                //   ws   
                //     webService       :         ,   ,      (     ,    )
                Student result=(Student)call.invoke("addStudent",new Object[]{id,name,address,status});
             System.out.println("        ,      :"+result);//    ,   ,            
    			str="addSuccess";
    		}catch(Exception e){
    			e.printStackTrace();
    			return "addError";
    		}
    		return str;
    	}
    

    3. 클 라 이언 트 접근 방식
    1, 새로운 자바 프로젝트 2, 패키지 Xfire 1.2 코어 라 이브 러 리 와 XFire 1.2 HTTP 클 라 이언 트 라 이브 러 리 추가 3, 테스트 클래스 생 성
    package com.testStudentServer;
    
    import java.net.URL;
    
    import org.codehaus.xfire.client.Client;
    import org.junit.Test;
    import org.w3c.dom.Document;
    
    public class TestClient {
    	@Test
    	public void testAddXsls() throws Exception{
    		Client client =new Client(new URL("http://localhost:8080/MyService/services/MyService?wsdl"));
    		Object[] results=client.invoke("addStudent", new Object[]{null,"  ","     ",0});
    		System.out.println("    :"+results[0]);
    		//      
    		Document d=(Document)results[0];
    	       System.out.println(d.getFirstChild().getFirstChild().getNodeValue());
    	      /*	           
    	       System.out.println("  2:===="+d.getFirstChild());
    		NodeList n1=d.getElementsByTagName("addStudent");
    		NodeList n2=n1.item(0).getChildNodes();
    		System.out.println("  :"+n2.getLength());
    		for(int i=0;i

    상기 3 단 코드 는 모두 테스트 를 거 쳐 정상적으로 사용 할 수 있 습 니 다!궁금 한 점 이 있 으 면 댓 글로 지적 해 주세요!

    좋은 웹페이지 즐겨찾기