无法使用PHP的Web服务

时间:2011-12-19 15:31:20

标签: php web-services soap yahoo-api

我使用此网站作为我的网络服务的指南..

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

我使用这段代码:

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

var_dump($resposeArray);

显然,我无法检索任何内容..并收到此错误:

  

致命错误:未捕获的SoapFault异常:[WSDL] SOAP-ERROR:解析WSDL:无法从“http://answers.yahooapis.com/AnswersService/V1/questionSearch”加载:无法加载外部实体“http ://answers.yahooapis.com/AnswersService/V1/questionSearch“在C:\ xampp \ htdocs \ Unnamed Site 2 \ untitled1.php:11堆栈跟踪:#0 C:\ xampp \ htdocs \ Unnamed Site 2 \ untitled1。 php(11):SoapClient-> SoapClient('http:// answers ....')#1 {main}在第11行的C:\ xampp \ htdocs \ Unnamed Site 2 \ untitled1.php中抛出

2 个答案:

答案 0 :(得分:1)

要使Web服务使用您的代码,PHP必须能够获取外部文件:

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

但是该文件不再起作用并返回错误:

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>

所以客户端无法继续。将其替换为工作版本,然后重试。看起来URL需要一些密钥,可能带有cookie / header或其他东西,我不熟悉那个特定的web服务。

答案 1 :(得分:0)

Yahoo! Answers webservice实际上不是SOAP,而是基于REST的。

例如,请参阅documentation for the question search method。对于搜索“经济学”的样本,调用将如下所示:

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

将返回(摘录):

<?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>

如果您想要使用此路线,则需要注册AppID键。这将有助于避免速率限制问题。

另一个不错的选择(也更适合未来)是通过YQL访问Answers API,并提供如下示例查询:

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