0
votes

I am using this site as a guide to my webservice..

http://developer.yahoo.com/answers/V1/questionSearch.html

and I use this code:

$client=new SoapClient("http://answers.yahooapis.com/AnswersService/V1/questionSearch");
$resposeArray=$client->__call("query","economics");

var_dump($resposeArray);

Apparently, I fail to retrieve anything.. and get this error:

Fatal error: Uncaught SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL: Couldn't load from 'http://answers.yahooapis.com/AnswersService/V1/questionSearch' : failed to load external entity "http://answers.yahooapis.com/AnswersService/V1/questionSearch" in C:\xampp\htdocs\Unnamed Site 2\untitled1.php:11 Stack trace: #0 C:\xampp\htdocs\Unnamed Site 2\untitled1.php(11): SoapClient->SoapClient('http://answers....') #1 {main} thrown in C:\xampp\htdocs\Unnamed Site 2\untitled1.php on line 11

2

2 Answers

1
votes

For the webservice to work with your code, PHP must be able to obtain the external file:

http://answers.yahooapis.com/AnswersService/V1/questionSearch

However that file doesn't work any longer and gives back an error:

HTTP/1.1 503 Service Unavailable
Date: Mon, 19 Dec 2011 15:42:30 GMT
Retry-After: 1324339200
Vary: Accept-Encoding
Connection: close
Transfer-Encoding: chunked
Content-Type: application/xml;charset=utf-8
Cache-Control: private

<?xml version="1.0" encoding="utf-8"?> <yahoo:error xmlns:yahoo="http://yahooapis.com/v1/base.rng" xml:lang="en-US"> <ya
hoo:description>Rate Limit Exceeded</yahoo:description> <yahoo:detail>Key has exceeded its configured rate limit.</yahoo
:detail> </yahoo:error>

So the client can't proceed. Replace it with a working version and try again. It looks like that the URL needs some key, probably with a cookie/header or something, I'm not familiar with that specific webservice.

0
votes

The Yahoo! Answers webservice is not actually SOAP, but is REST-based.

See, for example, the documentation for the question search method. For your sample search for "economics", the call would look like:

http://answers.yahooapis.com/AnswersService/V1/questionSearch?appid=your-appid-here&query=economics

which will return (snippet):

<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<ResultSet xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:yahoo:answers" xsi:schemaLocation="urn:yahoo:answers http://answers.yahooapis.com/AnswersService/V1/QuestionResponse.xsd">
    <Question id="20080829001109AAOc4h9" type="Answered">
        <Subject>Economics...?? ?</Subject>
        <Content>HSC economics? i have a choice to do economics and i really have no idea what it's about, i am aware it is about money and finance however i am a bit vague with the subject, can any one shed some light on the subject??
thanks for your help.
</Content>
        <Date>2008-08-29 00:11:09</Date>
        <Timestamp>1219993869</Timestamp>

        <Link>http://answers.yahoo.com/question/?qid=20080829001109AAOc4h9</Link>
        <Category id="396545359">Higher Education (University +)</Category>
        <UserId>LJHkcrxcaa</UserId>
        <UserNick>Sam</UserNick>
        <UserPhotoURL></UserPhotoURL>
        <NumAnswers>2</NumAnswers>

        <NumComments>1</NumComments>
        <ChosenAnswer>Most people misunderstand what Economics is all about.  It is not particularly similar to accounting or finance.  Businessmen can benefit from understanding it, but it is not "business."  Rather, Economics is a Social Science concerned with understanding how humans allocate scare resources.  What goods and services do we produce?  How much of each good or service do we produce?  Who does the producing, and who does the consuming?  Do we ever choose not to produce (for example in order to conserve a natural resource because we value it for it's own sake)?  How do we decide these things?  Etc.  That is what Economics is about.  I personally find it a very interesting subject, though it takes some effort at first.</ChosenAnswer>
        <ChosenAnswererId>Gjj5eCG6aa</ChosenAnswererId>
        <ChosenAnswererNick>RCM</ChosenAnswererNick>
        <ChosenAnswerTimestamp>1220067546</ChosenAnswerTimestamp>

        <ChosenAnswerAwardTimestamp>1226969668</ChosenAnswerAwardTimestamp>
    </Question>
...
</ResultSet>

If you want to go this route, you'll need to sign up for an AppID key. That will help avoid the rate limiting issue.

Another good alternative (also more future-proof) is to access the Answers API through YQL, with a sample query like the following:

select * from answers.search where query="economics"