2015-08-20 2 views
4

я использую Perl для доступа к Rest-Апи:Perl HTTP :: Request Помещенный -> Метод не допускается

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

my $req = HTTP::Request::Common::PUT("http://xxx:yyy/..."); 
$req->header('content-type' => 'application/json'); 
$req->authorization_basic('abc','xyz'); 

my $put_data = '{ 
     "description" : "TestPut" 
    }'; 
$req->content($put_data); 

my $resp = $ua->request($req); 
if ($resp->is_success){ 
    print $resp->content() . "\n"; 
} 
else{ 
    print "PUT failed:\n"; 
    print $resp->message . "\n"; 
} 

Но я получаю "Метод не допускается" Message. GET отлично работает. Может ли это быть проблемой Http-Server (Tomcat) или брандмауэром?

$ req-> as_string:

PUT #URL 
Authorization: Basic xxx= 
Content-Type: application/json 

{ 
      "description" : "TestPut" 
      } 
+0

Вы можете показать, что выглядит '$ req-> as_string'? – simbabque

+0

Также в вашем коде есть опечатка. У вас есть «HTTP: Request ...» с одним ':' вместо двух '::' в строке 5. Пожалуйста, исправьте это. Это ваш фактический код? – simbabque

+0

И, пожалуйста, всегда используйте «строгое» и «использование предупреждений». – simbabque

ответ

1

ГЭТ работает отлично. Может ли это быть проблемой Http-Server (Tomcat) или брандмауэром?

Да, вам нужно посмотреть там. GET и POST - обычные методы доступа к веб-сайту, в то время как PUT обычно используется для REST или WebDAV и не используется веб-браузером (если только вы не выполняете собственные запросы XHR). Таким образом, возможно, что брандмауэр или HTTP-сервер ограничивают доступ к этому методу.

Смежные вопросы