2010-02-25 14 views
6

Perl'deki bir alt yordamımdan bir Java tabanlı denetleyiciye istek göndermeye çalışıyorum. Ama hiçbir şekilde cevap alamıyorum. Java kodu iş dosyasını biliyorum çünkü bir HTML formundan gönderirseniz yanıt alabilirim.Çok yönlü bir HTTP isteğini Perl'den Java'ya nasıl gönderirim ve yanıt alırım?

Bu benim Perl kodu: Bu kod ile yanlış bir şey

use HTTP::Request::Common; 
    my $ua = LWP::UserAgent->new; 

    my $response = $ua->request(POST 'http://testserver/testing.nc', 
     Content_Type => 'form-data', 
     Content => [ 
      method => 'submit', 
      ftp_server => 'ftp.localhost', 
      ftp_user => 'testuser', 
      ftp_password => 'testpass', 
      remote_path => '/home/files', 
      port => 22, 
      file_to_upload => ["$file"] 
    ]); 

var mı?

+0

Neden ftp_server için çizgiler var? Http veya ftp kullanıyor musunuz? Bir ftp sitesinde bulunan bir dosyayı bir web sunucusuna göndermeyi düşünüyorsanız, bunun iki adımda yapılması gerekmez mi? Kafam karıştı. – Paul

+0

Tahminim, 'testing.nc' komut dosyasının dosyayı FTP sitesine aktarması gerekiyor. –

+0

Belki. Bir dosyayı yüklemek istiyorsa ve bir ftp sunucusuna erişimi varsa ve ftp sunucusunun kullanıcı/şifresini biliyorsa, o ve/veya işverenin buna izin vermesi halinde doğrudan bu transferi yapmak için bir perl modülü kullanabilir. Goe - Bu kodun ya da komut dosyasının düzgün bir şekilde çalıştığını biliyor musunuz? – Paul

cevap

6

Yayınlanan veriler must be of type multipart/form-data.

Düzenleme: belirtildiği gibi

POST yöntemi aynı zamanda Form tabanlı Dosya yükle için kullanılan multipart/form-data içeriği destekler: o form-data belirterek, çıkıyor böylece HTTP::Request::Common docs belirtildiği gibi tamam yeter RFC 1867. Bu içerik biçimini, istek başlıklarından biri olarak form-data içerik türünü belirterek tetiklersiniz.

Ancak HTTP::Request::Common::POST kullandığınız şekilde kullanmak için, POST ithal etmek gerekir:

use HTTP::Request::Common qw(POST); 

veya kullanım $ua->post:

LWP::UserAgent ait post(...) yöntem kısayol olarak var

$ua->request(POST ...) için.

WWW::Mechanize'u kullanarak hayatınızı kolaylaştırabilirsiniz. Ayrıca bkz. this upload example.

+0

Tam olarak ne demek istiyorsun? Content_Type asd 'form-data' satır 5 – goe

+0

"form-data"! = "Multipart/form-data" – Quentin

+0

olarak tanımladım. Peki, bu örneği şu adreste aldım: "http://kobesearch.cpan.org/htdocs/ libwww-perl/HTTP/Request/Common.pm.html # POST_url_Header_gt_Value_Content_gt_ "ve" form-data "yı kullanıyorlar ve POST ile gerçek URL – goe