http://www.webxml.com.cn/webservices/qqOnlineWebService.asmx/qqCheckOnline?qqCode=313525153
这是一个公网的webservice。
package net.ly.webservice.impl;
import org.dom4j.Document;public interface IGetWeather {
Document qqCheckOnline(String str);
}上面是接口
下面是接口测试类
package test;import static org.junit.Assert.*;import java.net.MalformedURLException;import org.codehaus.xfire.XFire;
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 org.junit.Test;
import net.ly.webservice.impl.IGetWeather;
import java.io.File;
import java.io.FileWriter;
import java.util.Iterator;
import java.util.List;
 
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;public class IGetWeatherTest { @Test
public void testWeather() {
Service service = new ObjectServiceFactory().create(IGetWeather.class);
XFire xFire =XFireFactory.newInstance().getXFire();
XFireProxyFactory factory = new XFireProxyFactory(xFire);
String qqCode="313525153";
String url="http://www.webxml.com.cn/webservices/qqOnlineWebService.asmx/";
try {
IGetWeather ig =(IGetWeather)factory.create(service, url);
Document document =ig.qqCheckOnline(qqCode);
//String text = document.asXML(); Element root=document.getRootElement();//获取文档的根节点
String text=root.elementText("string");//这个是取得根节点下的string字节点的文字.
//Element stringElm=root.element("string");//取得某节点的单个子节点
//String text=stringElm.getText(); //取得节点的文字
    System.out.println(text);
} catch (MalformedURLException e) { e.printStackTrace();
}
}}
的确解析应该算简单的,但我不知道问题出在哪里

解决方案 »

  1.   

    故障跟踪信息org.codehaus.xfire.XFireRuntimeException: Could not invoke service.. Nested exception is org.codehaus.xfire.fault.XFireFault: There must be a method name element.
    org.codehaus.xfire.fault.XFireFault: There must be a method name element.
    at org.codehaus.xfire.service.binding.WrappedBinding.readMessage(WrappedBinding.java:31)
    at org.codehaus.xfire.soap.handler.SoapBodyHandler.invoke(SoapBodyHandler.java:42)
    at org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:110)
    at org.codehaus.xfire.client.Client.onReceive(Client.java:382)
    at org.codehaus.xfire.transport.http.HttpChannel.sendViaClient(HttpChannel.java:120)
    at org.codehaus.xfire.transport.http.HttpChannel.send(HttpChannel.java:44)
    at org.codehaus.xfire.handler.OutMessageSender.invoke(OutMessageSender.java:26)
    at org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:110)
    at org.codehaus.xfire.client.Invocation.invoke(Invocation.java:75)
    at org.codehaus.xfire.client.Client.invoke(Client.java:335)
    at org.codehaus.xfire.client.XFireProxy.handleRequest(XFireProxy.java:77)
    at org.codehaus.xfire.client.XFireProxy.invoke(XFireProxy.java:57)
    at $Proxy4.qqCheckOnline(Unknown Source)
    at test.IGetWeatherTest.testWeather(IGetWeatherTest.java:44)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:585)
    at org.junit.internal.runners.TestMethodRunner.executeMethodBody(TestMethodRunner.java:99)
    at org.junit.internal.runners.TestMethodRunner.runUnprotected(TestMethodRunner.java:81)
    at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:34)
    at org.junit.internal.runners.TestMethodRunner.runMethod(TestMethodRunner.java:75)
    at org.junit.internal.runners.TestMethodRunner.run(TestMethodRunner.java:45)
    at org.junit.internal.runners.TestClassMethodsRunner.invokeTestMethod(TestClassMethodsRunner.java:71)
    at org.junit.internal.runners.TestClassMethodsRunner.run(TestClassMethodsRunner.java:35)
    at org.junit.internal.runners.TestClassRunner$1.runUnprotected(TestClassRunner.java:42)
    at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:34)
    at org.junit.internal.runners.TestClassRunner.run(TestClassRunner.java:52)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:38)
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)