posts - 32, comments - 153, trackbacks - 0, articles - 0
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理
昨天把Web服务架好了,那今天自然要想怎么来远程调用了.
于是写了如下代码:
/**
 * org.zsu.zouang
 * 2006-11-29
 
*/

package org.zsu.zouang;

import java.net.MalformedURLException;
import java.net.URL;
import java.rmi.RemoteException;

import javax.xml.namespace.QName;
import javax.xml.rpc.ServiceException;

import org.apache.axis.client.Call;
import org.apache.axis.client.Service;

/**
 * 2006-11-29
 * 
@author Zou Ang
 * Contact <a href ="mailto:richardeee@gmail.com">Zou Ang</a>
 
*/

public class MyBookServiceClient {
    
private static final String endPoint = "http://localhost:8080/axis/org/zsu/zouang/BookTitleService.jws?wsdl";
    
public static void main(String args[]){
        Service service 
= new Service();
        
try {
            Call call 
= (Call)service.createCall();
            call.setTargetEndpointAddress(
new URL(endPoint));
            call.setOperationName(
new QName("getBookTitle"));
            String result 
= (String)call.invoke(new Object[]{"0130895601"});
            System.out.println(result);
        }
 catch (ServiceException e) {
            
// TODO Auto-generated catch block
            e.printStackTrace();
        }
 catch (MalformedURLException e) {
            
// TODO Auto-generated catch block
            e.printStackTrace();
        }
catch(RemoteException e){
            e.printStackTrace();
        }

    }

}

控制台输出:
- Unable to find required classes (javax.activation.DataHandler and javax.mail.internet.MimeMultipart). Attachment support is disabled.
Advanced Java 
2 Platform How to Program
成功啦!
在代码中加上这一句:
System.out.println(call.getResponseMessage().getSOAPPartAsString());
会看到控制台输出:
<?xml version="1.0" encoding="utf-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

    
<soapenv:Body>
    
<getBookTitleResponse soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
        
<getBookTitleReturn xsi:type="xsd:string">
            Advanced Java 2 Platform How to Program
        
</getBookTitleReturn>
    
</getBookTitleResponse>
    
</soapenv:Body>
</soapenv:Envelope>

改进了一下,使用Swing建立一个图形化界面:
/**
 * 2006-11-29
 * 
@author Zou Ang
 * Contact <a href ="mailto:richardeee@gmail.com">Zou Ang</a>
 
*/

public class MyBookClient extends JFrame {

    
private final static int FRAME_WIDTH = 500;
    
private final static int FRAME_HEIGHT = 100;
    
    
public MyBookClient(String title) {
        
super(title);
        getContentPane().setLayout(
new GridLayout(2 , 2));
        
final String endPoint = "http://localhost:8080/axis/org/zsu/zouang/BookTitleService.jws?wsdl";
        
final JLabel resultLabel = new JLabel();
        
final JComboBox bookISDNBox = new JComboBox();
        bookISDNBox.addItem(
"0130895601");
        bookISDNBox.addItem(
"0430895717");
        bookISDNBox.addItem(
"0430293636");
        bookISDNBox.addItem(
"0130923613");
        
        
this.setSize(FRAME_WIDTH, FRAME_HEIGHT);
        JButton serviceButton 
= new JButton("Get Book Title");
        serviceButton.addActionListener(
new ActionListener(){

            
public void actionPerformed(ActionEvent e) {
                
// TODO Auto-generated method stub
                try {
                    Service service 
= new Service();
                    Call call 
= (Call)service.createCall();
                    call.setTargetEndpointAddress(
new URL(endPoint));
                    call.setOperationName(
new QName("getBookTitle"));
                    String result 
= (String)call.invoke(bookISDNBox.getSelectedObjects());
                    resultLabel.setText(result);
                }
 catch (AxisFault e1) {
                    
// TODO Auto-generated catch block
                    e1.printStackTrace();
                }
 catch (MalformedURLException e1) {
                    
// TODO Auto-generated catch block
                    e1.printStackTrace();
                }
 catch (RemoteException e1) {
                    
// TODO Auto-generated catch block
                    e1.printStackTrace();
                }
 catch (ServiceException e1) {
                    
// TODO Auto-generated catch block
                    e1.printStackTrace();
                }

            }

        }
);
        
        getContentPane().add(
new JLabel("Please ISDN number"));
        getContentPane().add(bookISDNBox);
        getContentPane().add(resultLabel);
        getContentPane().add(serviceButton);
    }

    
    
public static void main(String args[]){
        MyBookClient client 
= new MyBookClient("Book Title Service");
        client.setDefaultCloseOperation(EXIT_ON_CLOSE);
        client.setVisible(
true);
    }

}

评论

# re: Web Service学习日记-11月29日-建立客户端访问Web Service  回复  更多评论   

2006-11-29 23:21 by zhenghx[匿名]
今天在图书馆看到你那本书,去借时管理员跟我说那本书不能借 =_=!
郁闷~~

# re: Web Service学习日记-11月29日-建立客户端访问Web Service  回复  更多评论   

2006-11-29 23:30 by Zou Ang
什么叫那本书不能借?我都借着在看了

# re: Web Service学习日记-11月29日-建立客户端访问Web Service  回复  更多评论   

2006-11-30 23:53 by Tauruser
哪本书?

# re: Web Service学习日记-11月29日-建立客户端访问Web Service  回复  更多评论   

2007-01-25 15:51 by 冷面阎罗
那建一个罪简单的Web Service ,应该如何?

只有注册用户登录后才能发表评论。


网站导航: