не использовать веб-сервис с php - PullRequest
0 голосов
/ 19 декабря 2011

Я использую этот сайт в качестве руководства для моего веб-сервиса ..

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 \ Безымянный сайт 2 \ untitled1.php: 11 Трассировка стека: # 0 C: \ xampp \ htdocs \ Безымянный сайт 2 \ untitled1.php (11): SoapClient-> SoapClient ('http://answers. ...') # 1 {main}, брошенный в C: \ xampp \ htdocs \ Безымянный сайт 2 \ untitled1.php в строке 11

Ответы [ 2 ]

1 голос
/ 19 декабря 2011

Чтобы веб-сервис работал с вашим кодом, 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 / заголовком или чем-то, я не знаком с этим конкретным веб-сервисом.

0 голосов
/ 05 января 2012

Yahoo!Ответы webservice на самом деле не SOAP, но основан на REST.

См., Например, документацию для метода поиска вопросов .Для вашего примера поиска по "экономике", вызов будет выглядеть следующим образом:

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&#039;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&#039;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.Это поможет избежать проблемы ограничения скорости.

Другая хорошая альтернатива (также более перспективная на будущее) - это доступ к API ответов через YQL , с примером запроса, подобным следующему:

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

...