Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Перловка и вебсервисы ;) / 1 сообщений из 1, страница 1 из 1
17.07.2006, 23:14
    #33859323
Аноним
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перловка и вебсервисы ;)
В продолжение темы отсюда http://www.gotdotnet.ru/Forums/Web/295045.aspx#298680
Руки, чесались давно, ну вот и почесал получилось своего рода mini howto

Для приготавления перловки приправленной веб сервисами понадабяться
следующие ингредиенты :

— Windows XP Professional
— Visual Studio 2003 .NET
— Active Perl ( http://downloads.activestate.com/ActivePerl/Windows/5.8/ActivePerl-5.8.8.817-MSWin32-x86-257965.msi )

После установки Active Perl делаем:

> perl -MCPAN -eshell
cpan> install SOAP::Lite


соглашаемся со всей требухой и после установки делаем quit

дале создаем web service :

using System;
using System.Collections;
using System.ComponentModel;
using System.IO;
using System.Data;
using System.Diagnostics;
using System.Web;
using System.Web.Services;

// pushmsg.asmx
namespace pushws
{
    public class pushmsg : System.Web.Services.WebService
    {
        public pushmsg()
        {
            InitializeComponent();
        }

        #region Vom Komponenten-Designer generierter Code
        
        private IContainer components = null;
                
        private void InitializeComponent()
        {
        }

        protected override void Dispose( bool disposing )
        {
            if(disposing && components != null)
            {
                components.Dispose();
            }
            base.Dispose(disposing);        
        }
        
        #endregion

        [WebMethod]
        public bool PushMsg(string msg)
        {
            using(StreamWriter sw =new StreamWriter(@"C:\Projekte\pushws\temp\msg.txt"))
            {
                sw.Write(msg);
                sw.Flush();
            }
        
            return true;
        }
    }
}



создаем perl клиента :

#!/bin/perl -w

use strict;
use warnings;

use LWP;
use SOAP::Lite;
use Data::Dumper;

use vars qw/ %opt /;

my %Services = ( PushMsg => { args => ['Msg'],default => ['Hallo']}, );

sub init()
{
use Getopt::Std;
my $opt_string = 'H:p:u:s:hvdlt';
getopts( "$opt_string", \%opt ) or usage();
usage() if $opt{h};
$opt{v} ||= $opt{d};
}

sub usage()
{
print STDERR << "EOF";

usage: $0 [-hvtdlHpus] [arg1 .. argn]

-h : was hast du denn gedacht, wozu das gut ist ?
-H : host, default 'localhost'
-p : http port, default 80
-u : Root-URL, default '/pushws/pushmsg.asmx'
-s : Service name, default 'PushMsg'
-l : list services
-t : time service
-v : verbose output
-d : bemuellen die konsole mit debug ausgabe

example: $0 -v -H irgendwoimwald -p 80

EOF
exit;
}

sub list()
{
print "das haben wir heute im menue:\n";
for my $key ( sort keys %Services ) {
print "\t$key ( ";
print join(', ', @{ $Services{$key}{args} });
print " )\n";
}
exit 0;
}

init();

sub HOST () { $opt{H} || 'localhost' }
sub PORT () { $opt{p} || 80 }
sub ROOT () { $opt{u} || '/pushws/pushmsg.asmx/' }

sub DEBUG () { $opt{d} }
sub VERBOSE () { $opt{v} }

sub DEFAULT_SERVICE { 'PushMsg' }

list() if $opt{l};

my $Browser = LWP::UserAgent->new;
my $Url = "http://" . HOST . ":" . PORT . ROOT;

my $Service = $opt{s} || DEFAULT_SERVICE;
if (! exists $Services{$Service})
{
print STDERR "hmm, der service [$Service] ist heute ausnahmsweise nicht verfuegbar.\n";
exit 1;
}

doService($Service, @ARGV);


sub doService
{
my ($service, @args) = @_;

my @params = @{ $Services{$service}{'args'} };
my %pargs = ();

if ( $#args != $#params ) {
print STDERR "keine oder falsche parameter fuer $service eingegeben (" . ($#args + 1) . '/' . ($#params + 1) . ") -- scheiss drauf...\n";
@args = @{ $Services{$service}{'default'} };
}

my $url = $Url . $service;
print STDERR "POSTing to $url\n" if VERBOSE;

my $i = 0;
for (@params) {
print STDERR "\t$_ => $args[$i]\n" if VERBOSE;
$pargs{$_} = $args[$i++];
}

my $response = $Browser->post( $url, [ %pargs ] );

die "Can't post $url -- ", $response->status_line
unless $response->is_success;

die "es wird xml erwartet, nicht dieser kram -> ", $response->content_type
unless $response->content_type eq 'text/xml';

print $response->content;
}

запускаем :
C:\Projekte\perl> testws.pl MessageToPush <?xml version="1.0" encoding="utf-8"?>
<boolean xmlns="http://tempuri.org/">true</boolean>
C:\Projekte\perl>


и смотрим в C:\Projekte\pushws\temp\msg.txt, там должно находиться MessageToPush-- Если тебе помогли, незабудь сказать спасибо --
-- Это всё мое личное мнение которое может не совпадать с Вашим или может быть ошибочным --

.NetCoder

данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Перловка и вебсервисы ;) / 1 сообщений из 1, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]