為了演示這個客戶端的具體用法,接下來我們用這個客戶端來嘗試調(diào)用在BDF2-WEBSERVICE模塊當(dāng)中介紹的示例Webservice,看看它能不能調(diào)用成功并為我們返回正確的結(jié)果。具體調(diào)用代碼如下:
WebserviceClient類調(diào)用Webservice測試
package ws;
import com.bstek.bdf2.webservice.client.WebServiceClient;
public class WebserviceInvokeTest {
public static void main(String[] args) throws Exception{
String uri="http://localhost:8080/bdf2-test/dorado/webservice/requestUserWebService";
//設(shè)置Webservice客戶端要調(diào)用的目標(biāo)Webservice的地址
WebServiceClient client=new WebServiceClient(uri);
//設(shè)置要調(diào)用的目標(biāo)Webservice的WS-Security認證所需要的username及password,以及是否對用戶名及密碼進
行加密傳輸
client.setUsernameToken("admin", "81c1206f28f2738cdf714b4e10428c66f58eee10", true);
/**
* 設(shè)置要調(diào)用的目標(biāo)Webservice的Http Basic認證所需要的username及password,
* Http Basic認證當(dāng)中所使用的密碼為加密之前的密碼,而非被加密之后的密碼
* */
//client.setHttpAuthenticationCredentials("admin", "admin");
UserRequest request= new UserRequest();
request.setTargetCompany("bstek");
request.setUserCount(2);
//設(shè)置在調(diào)用目標(biāo)Webservice過程當(dāng)中,需要將Javabean與XML進行相互序列化的Javabean類的class
client.setMarshallerClasses(new Class[]{UserRequest.class,UserResponse.class});
//發(fā)送調(diào)用請求并返回調(diào)用結(jié)果
UserResponse response=(UserResponse)client.sendAndReceive(request);
//輸出返回結(jié)果
for(User user:response.getUsers()){
System.out.println("username:"+user.getUsername() +" company:"+user.getCompanyId());
}
}
}
基于XFire的Dynamic Client實現(xiàn)Webservice調(diào)用
package test; import java.net.URL; import org.apache.xerces.dom.DocumentImpl; import org.codehaus.xfire.client.Client; import org.jdom.Element; import org.jdom.Text; import org.w3c.dom.Node; import org.w3c.dom.NodeList; public class SimpleTest { public static void main(String[] args) throws Exception{ URL url=new URL("http://localhost:8080/bdf2-test/dorado/webservice/UserService.wsdl"); Client client=new Client(url); Element root=new Element("UserRequest"); Element company=new Element("targetCompany"); company.setContent(new Text("bstek")); root.addContent(company); Element userCount=new Element("userCount"); userCount.setContent(new Text("2")); root.addContent(userCount); Object[] obj=client.invoke("User",new Object[]{root}); DocumentImpl doc=(DocumentImpl)obj[0]; Node node=doc.getFirstChild().getFirstChild(); NodeList list=node.getChildNodes(); for(int i=0;i<list.getLength();i++){ Node userNode=list.item(i); System.out.println("username:"+userNode.getFirstChild().getTextContent()); } } }
更多建議: