日期:2014-05-19  浏览次数:20846 次

我都弄了1周了。大家帮帮忙!Xfire 服务器无法处理请求。 ---> 未将对象引用设置到对象的实例。
代码如下:
package com.weather.xfire;

import java.net.MalformedURLException;
import java.net.URL;

import org.apache.commons.httpclient.params.HttpClientParams;
import org.codehaus.xfire.client.Client;
import org.codehaus.xfire.transport.http.CommonsHttpMessageSender;

public class TestWeatherClient {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try {

Client client = new Client(new URL("http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl"));
// client.setProperty(, value);
HttpClientParams params = new HttpClientParams();
// 避免'Expect: 100-continue' handshake
params.setParameter(HttpClientParams.USE_EXPECT_CONTINUE,Boolean.FALSE);
//设置ws连接超时时间
params.setParameter(HttpClientParams.CONNECTION_MANAGER_TIMEOUT, (long)100);
client.setProperty(CommonsHttpMessageSender.HTTP_CLIENT_PARAMS,params);

// client.setInHandlers(new MyHandler());
Object[] objectArray = new Object[1];
objectArray[0]="北京";
// objectArray[1]="";
Object[] response = client.invoke("getWeatherbyCityName", objectArray);
System.out.println(response[0]);
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

}



错误:
org.codehaus.xfire.fault.XFireFault: 服务器无法处理请求。 ---> 未将对象引用设置到对象的实例。
at org.codehaus.xfire.fault.Soap11FaultSerializer.readMessage(Soap11FaultSerializer.java:31)
at org.codehaus.xfire.fault.SoapFaultSerializer.readMessage(SoapFaultSerializer.java:28)
at org.codehaus.xfire.soap.handler.ReadHeadersHandler.checkForFault(ReadHeadersHandler.java:111)
at org.codehaus.xfire.soap.handler.ReadHeadersHandler.invoke(ReadHeadersHandler.java:67)
at org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:131)
at org.codehaus.xfire.client.Client.onReceive(Client.java:406)
at org.codehaus.xfire.transport.http.HttpChannel.sendViaClient(HttpChannel.java:139)
at org.codehaus.xfire.transport.http.HttpChannel.send(HttpChannel.java:48)
at org.codehaus.xfire.handler.OutMessageSender.invoke(OutMessageSender.java:26)
at org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:131)
at org.codehaus.xfire.client.Invocation.invoke(Invocation.java:79)
at org.codehaus.xfire.client.Invocation.invoke(Invocation.java:114)
at org.codehaus.xfire.client.Client.invoke(Client.java:336)
at org.codehaus.xfire.client.Client.invoke(Client.java:368)
at com.weather.xfire.TestWeatherClient.main(TestWeatherClient.java:32)


在网上找不到相关资料。帮忙看看!谢谢!


------解决方案--------------------
回帖是一种美德!
顶顶。
------解决方案--------------------
遇到同样的问题,非常郁闷。
------解决方案--------------------
对象没有实例化。
试着debug出来
------解决方案--------------------
没有深入研究xfire,后来改用axis调用就可以了。
------解决方案--------------------
对象传输要配置相关的xml文件,如果传递javabean或者是基本数据类型,是可以直接传