从Perl发布到WEB API会导致[FromBody]中出现空值

时间:2013-03-07 21:32:19

标签: perl asp.net-web-api

我们已经创建了一个WEB API(在.NET framework 4.0中),并将端点信息提供给我们的一个客户端。他们在Perl中创建了一个发布到我们端点的程序。

到目前为止,他们发布的每个帖子都以null结尾到达我们的端点。当我们最初开始编程时,我们在通过$ .ajax发布时在JQuery中遇到了同样的问题。我们通过在帖子数据的开头添加'='来解决它。

他们提交的Perl代码如下:

sub _postPackages {
    my ($self,$dataToSend) = @_;


    use LWP::UserAgent;
    my $ua = LWP::UserAgent->new;
    $ua->agent("integrationapp/1.0 ");

    # Create a request
    my $req = HTTP::Request->new(POST => $self->{postAddress} );

    $req->content_type("application/json;charset=utf-8");
    $req->content($dataToSend->{data});

    #print Data::Dumper->Dump([$req]);

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

其中 postAddress 是我们的终端, $ dataToSend 是消息数据。是否有可能需要在 $ dataToSend 消息的开头添加“=”。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

这里有一些伪代码..

但我猜你想做这样的事情:

# some post sub
my ($self, $data) = @_; 
my $ua = $self->get_user_agent();
my $json_xs = $self->get_json_xs();

my $json_encoded = $json_xs->utf8->encode($data);
$self->set_post_data($json_encoded);
$self->set_api_call();

my $response_body = $ua->post(
    $self->get_api_call(),
    'Content'      => $self->get_post_data(),
    'Content-type' => "application/json;charset=UTF-8"
);  
print STDERR "POSTING NEW RESOURCE: " . Dumper($self);