有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java对象引用在运行代码时未设置为对象执行选项的实例

我正在尝试一个soap weservice示例。 代码使用GeoIp webservice从ip地址确定国家。 当我执行代码时,我得到以下异常

例外情况:

Exception in thread "main" com.sun.xml.internal.ws.fault.ServerSOAPFaultException: Client received SOAP Fault from server: System.Web.Services.Protocols.SoapException: Server was unable to process request. ---> System.NullReferenceException: Object reference not set to an instance of an object.
at WebserviceX.Service.Adapter.IPAdapter.CheckIP(String IP)
at WebserviceX.Service.GeoIPService.GetGeoIP(String IPAddress)
--- End of inner exception stack trace --- Please see the server log to find more detail regarding exact cause of the failure.
    at com.sun.xml.internal.ws.fault.SOAP11Fault.getProtocolException(SOAP11Fault.java:178)
    at com.sun.xml.internal.ws.fault.SOAPFaultBuilder.createException(SOAPFaultBuilder.java:116)
    at com.sun.xml.internal.ws.client.sei.StubHandler.readResponse(StubHandler.java:238)
    at com.sun.xml.internal.ws.db.DatabindingImpl.deserializeResponse(DatabindingImpl.java:189)
    at com.sun.xml.internal.ws.db.DatabindingImpl.deserializeResponse(DatabindingImpl.java:276)
    at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:104)
    at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:77)
    at com.sun.xml.internal.ws.client.sei.SEIStub.invoke(SEIStub.java:147)
    at com.sun.proxy.$Proxy31.getGeoIP(Unknown Source)
    at org.manjosh.demo.IPlocationFinder.main(IPlocationFinder.java:19)

我的代码:

import net.webservicex.GeoIP;
import net.webservicex.GeoIPService;
import net.webservicex.GeoIPServiceSoap;

public class IPlocationFinder {

    public static void main(String[] args) {

        if (args.length != 1){
            System.out.println("you need to pass atleast 1 IP address");
        }
        else
        {
            String ipAddress = args[0];
            GeoIPService ipService = new GeoIPService();
            GeoIPServiceSoap geoIpserviceSoap = ipService.getGeoIPServiceSoap();
            GeoIP geoIp = geoIpserviceSoap.getGeoIP(ipAddress);
            System.out.println((String)geoIp.getCountryName());
        }
    }

}   

共 (1) 个答案

  1. # 1 楼答案

    如果首先在sopui中得到响应,请使用soapui创建xml并发送请求。然后检查作为请求发送的xml是否包含所有字段,并与soapui请求中的一个字段匹配