Кто-нибудь знает, как преобразовать этот Perl-скрипт в PHP? - PullRequest
0 голосов
/ 09 марта 2011

Кто-то просто сбросил мне Perl-скрипт, и теперь это моя проблема.Я ничего не знаю о Perl.Вот сценарий.

#! /usr/bin/perl
use HTTP::Request::Common qw(POST);
use LWP::UserAgent;
$ua = LWP::UserAgent->new;

my $req = POST 'http://www.someurl.com/aff/', [ search => 'www', errors => 0 ];

my $xml = "<?xml version='1.0' encoding='UTF-8' ?>
<data xmlns='https://www.aff.gov/affSchema' sysID='Adin'
rptTime='2010-06-07T14:10:30.758-07:00' version='2.23'>
<msgRequest to='Co' from='trt' msgType='Data Request' subject='Async'
dateTime='2010-06-07T14:10:30.758-07:00'>
<body>2010-06-07T14:50:06Z</body>
</msgRequest>
</data>";

$req->content( $xml );
my $username = "providedUserName";
my $password = "providedPW";

$req->authorization_basic($username, $password);

print $ua->request($req)->as_string;

Насколько я могу судить, это создание объекта HTTP-запроса, добавление некоторого содержимого и печать ответа.Google говорит мне, что мне нужно установить пакет Perl, чтобы получить объект HTTPRequest в PHP, что не вариант.Можно ли как-нибудь сделать это с помощью cURL или file_get_contents или чего-то еще?

Я буду продолжать возиться, но если кто-нибудь точно знает, как это сделать, то это сэкономит мне время, тратя впустую время.

1 Ответ

6 голосов
/ 09 марта 2011

Это HTTP-запрос POST с типом содержимого 'text / xml'.Я полагаю, что вы можете сделать это с помощью cURL следующим образом (пример адаптирован из http://www.infernodevelopment.com/curl-php-send-post-data-background и не проверен):

$x = curl_init("http://www.someurl.com/aff/");
curl_setopt($x, CURLOPT_HTTPHEADER, array('Content-Type: text/xml'));
curl_setopt($x, CURLOPT_HEADER, 0);
curl_setopt($x, CURLOPT_POST, 1);
curl_setopt($x, CURLOPT_RETURNTRANSFER, 1);

$xml = "<?xml version='1.0' encoding='UTF-8' ?>
  <data xmlns='https://www.aff.gov/affSchema' sysID='Adin'
    rptTime='2010-06-07T14:10:30.758-07:00' version='2.23'>
      <msgRequest to='Co' from='trt' msgType='Data Request' subject='Async'
        dateTime='2010-06-07T14:10:30.758-07:00'>
          <body>2010-06-07T14:50:06Z</body>
      </msgRequest>
  </data>";
curl_setopt($x, CURLOPT_POSTFIELDS, $xml);

$username = "providedUserName";
$password = "providedPW";
curl_setopt($x, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($x, CURLOPT_USERPWD, "$username:$password");

$data = curl_exec($x);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...