Well, it looks like I have hit a problem before even reaching the problem I 
originally mentioned.

$client = new SoapClient($this->sushiURL); 

Throws a fatal error due to a schema not being found. I looked into this a bit 
online and heard a lot of complaints about the ability of the native PHP 
SoapClient class to handle complex xml schemas. So, I tried the NuSOAP library 
and at least was able to initialize the soap client object. Here's my code:

$client = new nusoap_client($this->sushiURL);
$result =  $client->call("GetReport",$params);//$params is a series of nested 
associative arrays 

However, var_dump($result) results in bool(false). This is odd because 
var_dump($client) shows that it has definitely pulled _something_ back from the 
URL I supplied. And in my testing with SoapUI, even when the parameters you 
supply are wrong, you will at least get some response from the server.

I'm officially stumped, and I must say that the documentation available for 
this sort of thing really stinks. If/when I get this working, I plan on making 
some sort of tutorial for it.


Josh Welker
Electronic/Media Services Librarian
College Liaison
University Libraries
Southwest Baptist University
417.328.1624


-----Original Message-----
From: Code for Libraries [mailto:[email protected]] On Behalf Of Walker, 
David
Sent: Tuesday, February 28, 2012 9:51 AM
To: [email protected]
Subject: Re: [CODE4LIB] PHP SUSHI client

Hi Joshua,

What do you see if you do:

  var_dump($client->__getFunctions());

That should show you the available methods and their parameters.

--Dave

-----------------
David Walker
Library Web Services Manager
California State University


-----Original Message-----
From: Code for Libraries [mailto:[email protected]] On Behalf Of Joshua 
Welker
Sent: Tuesday, February 28, 2012 6:00 AM
To: [email protected]
Subject: [CODE4LIB] PHP SUSHI client

Hi everyone, first post to this listserv.

I just started working on a SUSHI harvester client as an addition to a data 
management program I've built primarily with PHP/MySQL. There are a few 
projects I've seen listed by the NISO SUSHI organization for doing this, but 
they are all in Java or .NET. I am not very familiar with those languages and 
want my app to stay in the realm of PHP for continuity sake, so the 
roll-your-own approach is the only way to go.

I am having trouble understanding how WSDL and SOAP object methods interact 
with my code. I know from reading the SUSHI protocol standard that there is a 
method called GetReport that is used to retrieve the report. What I am having a 
hard time understanding is how I can pass data into the GetReport method.

For example, I have the following code in a class:

$client = new SoapClient($this->sushiURL); $this->response = 
$client->GetReport(???);

Where the ??? is, I need to be passing in the basic parameters of a SUSHI 
request: customer ID, requestor ID, date range, etc. As an alternative, I guess 
I could do it "longhand" and pass in an entire XML file, but I'd like to learn 
the standard way using the WSDL method as specified in the protocol definition.

This is somewhat unrelated, but is it possible to limit the COUNTER data 
returned to a particular database? Most vendors such as EBSCO allow you to 
limit COUNTER reports to a particular database in their admin modules, but I 
don't see any way in the SUSHI standard to specify one.

If anyone with experience rolling a SUSHI client could give me some pointers 
here, I'd greatly appreciate it.


Josh Welker
Electronic/Media Services Librarian
College Liaison
University Libraries
Southwest Baptist University
417.328.1624

Reply via email to