Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите сформировать запрос к Bing API Version 2. 
:(
    Опции темы
nIkTo
Дата 29.1.2010, 22:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 218
Регистрация: 5.7.2007

Репутация: нет
Всего: нет



Помогите сформировать запрос к Bing API Version 2.2
WSDL расположен по адресу : http://api.bing.net/search.wsdl

Серфил Google в поисках готового решения ничего не нашлось, нашёл только вот эту статью : http://nomagic.ru/article.php?aid=50

Но там рассматривается более раняя версия (Live Search API Version 1.1b).
Так же нашлись решения на основе .NET вот : http://www.codeproject.com/KB/cs/BingSearch.aspx
Как я понял вот эта часть кода формирует запрос :

Код

public string SearchOutput(string AppId, string query, int offset, int no_of_res)
{
    using (LiveSearchService service = new LiveSearchService())
        {
            try
            {
                SearchRequest request = new SearchRequest();
                request.AppId = AppId;
              request.Query = query;
                request.Sources = new SourceType[] { SourceType.Web }; //You may specify multiple
                request.Version = "2.0";
               request.Market = "en-us";
               request.Adult = AdultOption.Moderate;
               request.AdultSpecified = true;
                 request.Web = new WebRequest();
               request.Web.Count = no_of_res;
               request.Web.CountSpecified = true;
               request.Web.Offset = offset;
                SearchResponse response = service.Search(request);
                return GetResponsestring(response);
             }
            catch (Exception ex)
            {
                return ex.Message;
            }
       }
} 


Пробовал сформировать запрос по такой же схеме но для (Bing API Version 2.2), вот что вышло :

Код

#!/usr/bin/perl -w
use strict;
use Data::Dumper;
use SOAP::Lite;

my $parameters = {
                  "parameters" => {
                                  "Query" => "hello",
                                  "AppId" => "5061CD1C64F6015A128E51FE1FDFDC3B18D0610A",
                                  "Sources" => {
                                                "SourceType" => ["Web"]
                                  }
                  }
};

my $soap = SOAP::Lite->service('http://api.bing.net/search.wsdl');
my $xml = $soap->Search($parameters);
print Dumper($xml);


Результат :

Цитата

D:\Development\Perl\Bing>test_5.pl
$VAR1 = undef;

PM   Вверх
mvsgt
Дата 29.1.2010, 23:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 209
Регистрация: 27.3.2009

Репутация: 1
Всего: 1



Вроде я Вам уже отвечал как надо делать. Ставите SOAP::WSDL, генерите классы, всё.

Код

wsdl2perl.bat http://api.bing.net/search.wsdl

... 

Код

#!perl -w
use strict;
use Data::Dumper;
use lib 'lib';
use MyInterfaces::BingService::BingPort;

my $interface = MyInterfaces::BingService::BingPort->new();

my $response;
# $response = $interface->Search();

$response = $interface->Search( {
    parameters =>  { # MyTypes::SearchRequest
      Query =>  'vingrad', # string
      AppId =>  '963759E17E33B6FE68C46850725FEA2F754ECC2E', # string
      Adult => 'Off', # AdultOption
      Sources =>  { # MyTypes::ArrayOfSourceType
        SourceType => 'Web', # SourceType
      },
    },
  },,
 );

print $response, Dumper($response);


Присоединённый файл ( Кол-во скачиваний: 2 )
Присоединённый файл  bing2.7z 15,83 Kb
PM MAIL   Вверх
nIkTo
Дата 30.1.2010, 00:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 218
Регистрация: 5.7.2007

Репутация: нет
Всего: нет



mvsgt, спасибо интересное решение.

Но как-то много всего получается, и много лишнего. Может как-нибудь проще реализовать ?
PM   Вверх
mvsgt
Дата 30.1.2010, 01:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 209
Регистрация: 27.3.2009

Репутация: 1
Всего: 1



Проще можно, например банально сформировать XML и по протоколу HTTP его передать, получить XML и его распарсить тем же SOAP::Lite - хотя можно даже без сторонних модулей обойтись, я так и делаю иногда. Можно JSON протокол использовать. Но это не кошерно.

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0464 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.