powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Перловка и вебсервисы ;)
8 сообщений из 8, страница 1 из 1
Перловка и вебсервисы ;)
    #33855447
dotnetcoder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В продолжение темы отсюда 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
...
Рейтинг: 0 / 0
Перловка и вебсервисы ;)
    #33855526
Random_Goodman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Конечно, крутой изврат, но зачем?

Перл почти помер.
...
Рейтинг: 0 / 0
Перловка и вебсервисы ;)
    #33855609
dotnetcoder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
perl живее всех живых, а нада мне что бы из linux'а данные толкать
на MSSQL, например отпарсить лог OpenVPN и в базу его.

-- Если тебе помогли, незабудь сказать спасибо --
-- Это всё мое личное мнение которое может не совпадать с Вашим или может быть ошибочным --

.NetCoder
...
Рейтинг: 0 / 0
Перловка и вебсервисы ;)
    #33855613
Random_Goodman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А почему на Моне тогда просто не написать клиента?
...
Рейтинг: 0 / 0
Перловка и вебсервисы ;)
    #33855621
dotnetcoder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2Random_Goodman: А почему на Моне тогда просто не написать клиента?

потому что OpenVPN/IPSec/FW/SSH вертятся под Linux'ом которы грузиться с Compact Flash и в системе swap отсутствует как класс,
кроме того perl out of the box в debian, а моно нет. Вобщем mono client
был бы слишком тяжелым клиентом для этих задач


Используются вот эти штуки http://www.lex.com.tw:8080/product/product-item.htm-- Если тебе помогли, незабудь сказать спасибо --
-- Это всё мое личное мнение которое может не совпадать с Вашим или может быть ошибочным --

.NetCoder
...
Рейтинг: 0 / 0
Перловка и вебсервисы ;)
    #33855626
Random_Goodman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А зачем такой изврат-то? Ж8-[ ] Для диплома шоль?
...
Рейтинг: 0 / 0
Перловка и вебсервисы ;)
    #33855628
dotnetcoder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нет, не для диплома,  это хозяйство работает сейчас по всей Германии

-- Если тебе помогли, незабудь сказать спасибо --
-- Это всё мое личное мнение которое может не совпадать с Вашим или может быть ошибочным --

.NetCoder
...
Рейтинг: 0 / 0
Перловка и вебсервисы ;)
    #33855636
Random_Goodman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dotnetcoderНет, не для диплома,  это хозяйство работает сейчас по всей ГерманииЯ помню их порнуху, всегда знал что они редкие извращенцы, но додуматься до такого Ж8-Б
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Перловка и вебсервисы ;)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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