2017-02-19 11 views
1

Я пробовал всю неделю, чтобы попытаться включить подключение к моему веб-сервису с помощью PHP curl, однако я не мог заставить его работать, поэтому я попытался свернуть с помощью командной строки и с удивлением. это сработало.Преобразование Linux Curl в PHP

Вот команда, которую я использовал, используя Линукс завиток:

curl -k -i -H "Content-type: application/x-www-form-urlencoded" -c cookies.txt -X POST https://<host>/appserver/j_spring_security_check -d "j_username=admin&j_password=demoserver"

Как преобразовать это в PHP-код?

PS. Я новичок и только что подвергся воздействию PHP с менее чем за месяц опыта, простите меня! : D

+1

Возможный дубликат [Преобразование командной строки cURL в PHP cURL] (http://stackoverflow.com/questions/1939609/convert-command-line-curl-to-php-curl) – gaurav

ответ

1

Вы спросили, как следующий Linux терминал curl команда относится к опционам PHP локон:

curl -k -i -H "Content-type: application/x-www-form-urlencoded" -c cookies.txt -X POST https://192.168.100.100:444/appserver/j_spring_security_chec‌​k -d "j_username=admin&j_password=demoserver"

Вот список из представленных выше опций/флагов:

  • - k = CURLOPT_SSL_VERIFYPEER: false
  • -i = CURLOPT_HEADER: true
  • -H = CURLOPT_HTTPHEADER
  • -c = CURLOPT_COOKIEJAR + CURLOPT_COOKIEFILE
  • -X POST = CURLOPT_POST: истинно
  • -d = CURLOPT_POSTFIELDS

Который приведет к точно следующее:

<?php 
    $ch = curl_init(); 
    $url = "https://192.168.100.100:444/appserver/j_spring_security_chec‌​k"; 
    $postData = 'j_username=admin&j_password=demoserver'; 
    curl_setopt($ch, CURLOPT_URL,$url); 
    curl_setopt($ch, CURLOPT_POST, 1); // -X 
    curl_setopt($ch, CURLOPT_POSTFIELDS,$postData); // -d 
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
     'application/x-www-form-urlencoded' 
    )); // -H 
    curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookies.txt'); // -c 
    curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookies.txt'); // -c 
    curl_setopt($ch, CURLOPT_HEADER, true); // -i 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // -k 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // see comment 
    echo curl_exec ($ch); 
    curl_close ($ch); 

Я надеюсь, что это помогает вам.

+0

Спасибо @mevdshchee, вы предоставляете тонны помощи! Я почти там .. У вас есть идеи, почему PHP curl не проталкивается, как завиток linux? Вот результат, когда я выполняю curl linux. 'HTTP/1.1 302 Найдено Дата: Чт, 16 фев 2017 19:12:22 GMT Сервер: Apache/2.2.26 (Unix) mod_ssl/2.2.25 OpenSSL/1.0.1e mod_jk/1.2.37 Set- Cookie: JSESSIONID = 9D1761E49919B0FCE8E077E70E250749; Path =/AppServer /; HttpOnly Расположение: https://192.168.100.100:444/appserver/portal/welcome;jsessionid=9D1761E49919B0FCE8E077E70E250749 Content-Length: 0 Access-Control-Allow-Origin: * Content-Type: Текст/plain' –

+0

You вероятно, нужно добавить опцию 'CURLOPT_FOLLOWLOCATION', чтобы следовать переадресации. Я добавил это в код. – mevdschee

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