Skip to content

Cannot load resource "null" #98

@ghost

Description

Good day,

Please your help!

I'm creating a web service that encapsulates another SAP service. For security reasons I can not publish the SAP service directly since all the services on the Internet would be exposed. I got the next error:

http://localhost:8000/app_dev.php/ws/WSConsultaSuscriptor?wsdl

Cannot load resource "null".

Configuration:
#WSConsultaSuscriptorController.php

"<?php

namespace Acme\SOAPBundle\Controller;

use BeSimple\SoapBundle\ServiceDefinition\Annotation as Soap;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\DependencyInjection\ContainerAwareInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\DependencyInjection\Container;

-/**
-* @soap\Header()
_*/

class WSConsultaSuscriptorController implements ContainerAwareInterface
{

  • /**
    -* Sets the container.
    -*
    -* @param ContainerInterface|null $container A ContainerInterface instance or null
    -*/
    public function setContainer(ContainerInterface $container = null){
    $this->container = $container;
    }

-/**
-* @soap\Method("ConsultaSuscriptor")
-* @soap\Param("VCliente", phpType = "string")
-* @soap\Param("VEtmenge", phpType = "string")
-* @soap\Param("VProducto", phpType = "string")
-* @soap\Param("VSpart", phpType = "string")
-* @soap\Result(phpType = "string")
-*/

public function ConsultaSuscriptorAction($header, $VCliente = '0',$VEtmenge = '0',$VProducto = '',$VSpart = '')
{
var_dump($VCliente);
exit();
ini_set('soap.wsdl_cache_enabled',0);
ini_set('soap.wsdl_cache_ttl',0);

  // require_once "nusoap.php";
  
  $URL = 'http://webservice?wsdl';
  $option = array('trace'=>true,'login' => 'xxxxx','password' => 'xxxxx',
  				'soap_version' => 'SOAP_1_1',
  				'encoding' => 'utf-8');
  $client = new \SOAPClient($URL, $option);
  $functions = $client->__getFunctions();
  $bodyoptions = array(
  	'VCliente' 	=> $VCliente,
  	'VEtmenge'	=> $VEtmenge,
  	'VProducto'	=> $VProducto, 
  	'VSpart'    => $VSpart
  	);
  $result = $client->call('Zvop20ValidaCant', array($bodyoptions));
  $soap = $client->__getLastResponse();
  
  $response = new Response($soap);
  $response->headers->set('Content-Type', 'application/xml; charset=utf-8');
  return $response;		

}
}

#routing.yml

acme_soap_homepage:
path: /
defaults: { _controller: AcmeSOAPBundle:Default:index }
acme_soap:
resource: '@AcmeSOAPBundle/Controller/'
type: annotation
_besimple_soap:
resource: 'be_simple_soap.yml'
prefix: /ws

#be_simple_soap.yml

_webservice_call:
path: /{webservice}
defaults: { _controller: BeSimpleSoapBundle:SoapWebService:Call }
requirements:
_format: xml
methods: POST

_webservice_definition:
path: /{webservice}
defaults: { _controller: BeSimpleSoapBundle:SoapWebService:Definition }
requirements:
_format: xml
methods: GET

#config.yml

be_simple_soap:
services:
WSConsultaSuscriptor:
namespace: http://localhost:8000/app_dev.php/ws/WSConsultaSuscriptor
binding: rpc-literal
resource: '@AcmeSOAPBundle/Controller/WSConsultaSuscriptorController.php'
resource_type: annotation

#SoapWebServiceController.php

"<?php

/*

  • This file is part of the BeSimpleSoapBundle.
  • (c) Christian Kerl christian-kerl@web.de
  • (c) Francis Besset francis.besset@gmail.com
  • This source file is subject to the MIT license that is bundled
  • with this source code in the file LICENSE.
    */

namespace BeSimple\SoapBundle\Controller;

use BeSimple\SoapBundle\Handler\ExceptionHandler;
use BeSimple\SoapBundle\Soap\SoapRequest;
use BeSimple\SoapBundle\Soap\SoapResponse;
use BeSimple\SoapServer\SoapServerBuilder;
use Symfony\Component\DependencyInjection\ContainerAwareInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\Exception\FlattenException;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
use Symfony\Component\HttpKernel\HttpKernelInterface;
use Symfony\Component\HttpKernel\Log\DebugLoggerInterface;

/**
.....
*/
class SoapWebServiceController Implements ContainerAwareInterface
{

  • /**
    -* Sets the container.
    -*
    -* @param ContainerInterface|null $container A ContainerInterface instance or null
    -*/
    public function setContainer(ContainerInterface $container = null){
    $this->container = $container;
    }

#autoload.php

"<?php

use Doctrine\Common\Annotations\AnnotationRegistry;
use Composer\Autoload\ClassLoader;

/** @var ClassLoader $loader */
$loader = require DIR.'/../vendor/autoload.php';
//Load BesimpleSoap
$loader->add('BeSimple\SoapCommon' , DIR.'/../vendor/besimple-soapcommon/src');
$loader->add('BeSimple\SoapServer' , DIR.'/../vendor/besimple-soapserver/src');
$loader->add('BeSimple\SoapClient' , DIR.'/../vendor/besimple-soapclient/src');
$loader->add('BeSimple\SoapClient' , DIR.'/../vendor/besimple-soapclient/src');
$loader->add('BeSimple', DIR.'/../vendor/bundles');

// var_dump ($loader);
// exit();

AnnotationRegistry::registerLoader([$loader, 'loadClass']);

return $loader;

#AppKernel.php

"<?php

use Symfony\Component\HttpKernel\Kernel;
use Symfony\Component\Config\Loader\LoaderInterface;

class AppKernel extends Kernel
{
public function registerBundles()
{
$bundles = [
new Symfony\Bundle\FrameworkBundle\FrameworkBundle(),
new Symfony\Bundle\AsseticBundle\AsseticBundle(),
new Symfony\Bundle\SecurityBundle\SecurityBundle(),
new Symfony\Bundle\TwigBundle\TwigBundle(),
new Symfony\Bundle\MonologBundle\MonologBundle(),
new Symfony\Bundle\SwiftmailerBundle\SwiftmailerBundle(),
new Doctrine\Bundle\DoctrineBundle\DoctrineBundle(),
new Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle(),
new AppBundle\AppBundle(),
new Acme\SOAPBundle\AcmeSOAPBundle(),
new BeSimple\SoapBundle\BeSimpleSoapBundle(),
];

    if (in_array($this->getEnvironment(), ['dev', 'test'], true)) {
        $bundles[] = new Symfony\Bundle\DebugBundle\DebugBundle();
        $bundles[] = new Symfony\Bundle\WebProfilerBundle\WebProfilerBundle();
        $bundles[] = new Sensio\Bundle\DistributionBundle\SensioDistributionBundle();
        $bundles[] = new Sensio\Bundle\GeneratorBundle\SensioGeneratorBundle();
    }

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions