415不支持的媒体类型HTTP

保持冷静

我正在尝试将GET请求发送到Cisco ISE,但收到此错误:

415不支持的媒体类型

我究竟做错了什么?API文档说:

方法:获取

URI:https://10.10.10.10:9060 / ers / config / networkdevice /

HTTP'Accept'标头:application / vnd.com.cisco.ise.network.networkdevice.1.0 + xml

因此,我应该能够以XML形式接收数据。

我已经尝试这样做:

$header->header(
    'Content-Type'=>'application/vnd.com.cisco.ise.network.networkdevice.xml');
$header->header(
    'Content-Type'=>'application/vnd.com.cisco.ise.network.networkdevice.1.0+xml');

什么都行..每次我收到上述错误。

这是我的完整代码。

use strict;
use warnings;
use JSON -support_by_pp;
use LWP 5.64;
use LWP::UserAgent;
use MIME::Base64;
use REST::Client;
use IO::Socket::SSL;
use HTTP::Headers;

#So dass es auch ohne SSL Sertifizierung funktioniert
BEGIN { $ENV{PERL_LWP_SSL_VERIFY_HOSTNAME} = 0 }
#Create a user agent object
my $ua = LWP::UserAgent->new(ssl_opts=> {
SSL_verify_mode => SSL_VERIFY_NONE(),
verify_hostname => 0,
                                              }
                                        );

#Create a request
my $uri='https://10.10.10.10:9060/ers/config/networkdevice';
my $header = HTTP::Headers->new;
$header->header('Content-Type'=>'application/vnd.com.cisco.ise.network.networkdevice');
my $req = HTTP::Request->new('GET', $uri, $header);
$req-> authorization_basic("user", "user");

#Pass request to the user agent and get a response back
my $res = $ua->request($req);

#Check the outcome of the response
if ($res->is_success) {
  print $res->content;
} else {
   print $res->status_line, "n";
}
津巴布韦

您的文档说您应该发送Accept带有该长类型标头。

HTTP'Accept'标头:application / vnd.com.cisco.ise.network.networkdevice.1.0 + xml

Accept是您的客户端将在响应中接受的内容类型。但是您将其用作Content-TypeGET请求中标头。这没有任何意义,因为GET请求没有正文。因此,它没有内容,并且不能具有其内容的类型。

API响应415不支持的媒体类型的事实有点奇怪。它也可以忽略这一点。我们没有办法知道为什么开发人员选择这样做。

要解决您的问题,请将您的请求更改为使用Accept标头而不是Content-Type

my $header = HTTP::Headers->new;
$header->header(Accept => 'application/vnd.com.cisco.ise.network.networkdevice.1.0+xml');
my $req = HTTP::Request->new('GET', $uri, $header);

注意,您不必显式创建自己的HTTP :: Headers对象。对于此简单请求,您可以将具有键/值对的数组ref传递给HTTP::Request->new

my $req = HTTP::Request->new(
    'GET', 
    $uri, 
    [ Accept =>'application/vnd.com.cisco.ise.network.networkdevice.1.0+xml' ],
);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章