VMware {code} Community
scroger
Enthusiast
Enthusiast

Web Services error with Web Client App


Howdy.  I'm trying to use web services ServiceContent and PropertyCollector in my vSphere Web Client application.  I've borrowed sample code from SimpleClient and PropertyCollector examples for my app.


I pass in hard coded parameters for server URL, username and password to get the ServiceContent object.  However, when I call retrieveServiceContent() (see below), I get 'Invalid Cookie' error, although vimPort does return a non null serviceContent.


                serviceContent = vimPort.retrieveServiceContent(SVC_INST_REF);


Later on, I try to use this serviceContent object along with PropertyCollector to try to retrieve a Host reference by hostname, yet the call to _vimPort.retrievePropertiesEx() fails with 'Connection Refused' error, possibly due to the invalid cookie.


Any ideas?


-Eric


more code details below:


private ServiceContent getServiceContent()

{

    /*

    

  • borrowed from SimpleClient example

     */

    

    // Server URL and credentials.

    String serverName = "10.128.111.222"; // args[0];

    String userName = "myuser"; // args[1];

    String password = "mypassword"; // args[2];

    String url = "https://" + serverName + "/sdk/vimService";  

    

    try

    {

        ManagedObjectReference SVC_INST_REF = new ManagedObjectReference();

        VimService vimService = null;

        VimPortType vimPort = null;

        ServiceContent serviceContent;

    

        HostnameVerifier hv = new HostnameVerifier() {

            public boolean verify(String urlHostName, SSLSession session) {

                return true;

            }

        };

        trustAll();

        HttpsURLConnection.setDefaultHostnameVerifier(hv);


        SVC_INST_REF.setType("ServiceInstance");
        SVC_INST_REF.setValue("ServiceInstance");
                
        vimService = new VimService();
        vimPort = vimService.getVimPort();
        Map<String, Object> ctxt = ((BindingProvider) vimPort).getRequestContext();
        
        ctxt.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, url);
        ctxt.put(BindingProvider.SESSION_MAINTAIN_PROPERTY, true);


/// ERROR here Invalid Cookie
        serviceContent = vimPort.retrieveServiceContent(SVC_INST_REF);
        
        vimPort.login(serviceContent.getSessionManager(), userName, password, null);
        
        return serviceContent;
    }
    catch(Exception ex)
    {
        ex.printStackTrace();
        return null;
    }
}


    public static List<ObjectContent> retrievePropertiesAllObjects(
            List<PropertyFilterSpec> listpfs, ServiceContent service)
            throws RuntimeFaultFaultMsg, InvalidPropertyFaultMsg {


       
        RetrieveOptions propObjectRetrieveOpts = new RetrieveOptions();


        List<ObjectContent> listobjcontent = new ArrayList<ObjectContent>();


        ManagedObjectReference propCollectorRef = service.getPropertyCollector();


        RetrieveResult rslts = _vimPort.retrievePropertiesEx(propCollectorRef,
                listpfs, propObjectRetrieveOpts);
        if (rslts != null && rslts.getObjects() != null
                && !rslts.getObjects().isEmpty()) {
            listobjcontent.addAll(rslts.getObjects());
        }
        String token = null;
        if (rslts != null && rslts.getToken() != null) {
            token = rslts.getToken();
        }
        while (token != null && !token.isEmpty()) {
/// ERROR here connection refused
            rslts = _vimPort.continueRetrievePropertiesEx(propCollectorRef,
                    token);
            token = null;
            if (rslts != null) {
                token = rslts.getToken();
                if (rslts.getObjects() != null && !rslts.getObjects().isEmpty()) {
                    listobjcontent.addAll(rslts.getObjects());
                }
            }
        }


        _logger.info("ManagedObjectService::retrievePropertiesAllObjects, return listobjcontent " );
        return listobjcontent;
    }


 

0 Kudos
0 Replies