2017-06-10 8 views
0
'Origin: http://vehiculos.valledelcauca.gov.co','Accept-Encoding: gzip, deflate' -H 'Accept-Language: es-ES,es;q=0.8' -H 'User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36' -H 'HC: 910141113' -H 'Content-Type: text/plain;charset=UTF-8' -H 'Accept: */*' -H 'Referer: http://vehiculos.valledelcauca.gov.co/post_smart_valle_prod/www/com.aspsolutions.GWTJSuite/8E997CB2F1E5E2F7BF75687812584FF1.cache.html' -H 'Cookie: JSESSIONID=D949D5A5B78EA4EEF453283118D0D5C7' -H 'Connection: keep-alive' --data-binary '<C1 N1="com.smart.src.taxvalle.taxinva.taxinva" HC="910141113" CP="F" MOC="LCSP" ><XD SI="" ><D N="DCRITERIOS" ><R ID="0" ST="I" ><F N="SuimNi01" V="JWF579" /></R></D><D N="DWEB" ><R ID="0" ST="I" /></D></XD><XV E4="29" MOC="LCSP" NTF="DCRITERIOS.LCSP" CP="F" /><M1 N1="processEvent" /></C1>' --compressed 

私はこのカールをする方法がわかりませんが、私はいくつか試しましたが、私はそのバイナリデータを投稿する方法は見当たりません。あなたを助けたいんです。どのようにカールするPHPこれはbashです

これは私のコードです:

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
//$urlfija="https://consulta.simit.org.co/Simit/"; 
$ur2 = "http://vehiculos.valledelcauca.gov.co/post_smart_valle_prod/FrameworkServlet"; 


curl_setopt($ch, CURLOPT_URL, $ur2); 
curl_setopt($ch, CURLOPT_HEADER, 1); 
curl_setopt($ch, CURLINFO_HEADER_OUT, 1); 
curl_setopt($ch, CURLOPT_VERBOSE, 1); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
curl_setopt($ch, CURLOPT_FRESH_CONNECT, 1); 
curl_setopt($ch, CURLOPT_POST, 1); 
//curl_setopt($ch, CURLOPT_COOKIE, 'BIGipServerPOOL_WEBLOGIC=1157784586.15900.0000; path=/; Httponly'); 
curl_setopt($ch, CURLOPT_POSTFIELDS, '<C1 N1="com.smart.src.taxvalle.taxinva.taxinva" HC="910141113" CP="F" MOC="LCSP" ><XD SI="" ><D N="DCRITERIOS" ><R ID="0" ST="I" ><F N="SuimNi01" V="JWF579" /></R></D><D N="DWEB" ><R ID="0" ST="I" /></D></XD><XV E4="29" MOC="LCSP" NTF="DCRITERIOS.LCSP" CP="F" /><M1 N1="processEvent" /></C1>'); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLINFO_HEADER_OUT, 1); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Origin: http://vehiculos.valledelcauca.gov.co', 
'Accept-Encoding: gzip, deflate', 
'Accept-Language: es-ES,es;q=0.8', 
'User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36', 
'HC: 910141113', 
'Content-Type: text/plain;charset=UTF-8', 
'Accept: */*', 
'Referer: http://vehiculos.valledelcauca.gov.co/post_smart_valle_prod/www/com.aspsolutions.GWTJSuite/8E997CB2F1E5E2F7BF75687812584FF1.cache.html', 
'Cookie: JSESSIONID=D949D5A5B78EA4EEF453283118D0D5C7', 
'Connection: keep-alive' 

    )); 
curl_setopt($ch, CURLOPT_VERBOSE, TRUE); 


$responsea11 = curl_exec($ch); 


curl_close($ch); 

答えて

2

カールは具体的には、あなたのためのPHPコードを記述することはできませんが、それは使用して、あなたのためのCコードを書くことのできる私を助けてください - -libcurlパラメーター。そのコードをCからPHPに翻訳するのはかなり簡単です。 (ボーナスとして、PHPとCは同じように見えるので、PHP構文に慣れていれば、C構文は読みにくくなりません)。残念ながら、あなたのcurlコマンドは、少なくともそれのためのPHPラッパー不完全なので、私は今--libcurl test.cを追加し、curl -H 'Origin: http://vehiculos.valledelcauca.gov.co','Accept-Encoding: gzip, deflate' -H 'Accept-Language: es-ES,es;q=0.8' -H 'User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36' -H 'HC: 910141113' -H 'Content-Type: text/plain;charset=UTF-8' -H 'Accept: */*' -H 'Referer: http://vehiculos.valledelcauca.gov.co/post_smart_valle_prod/www/com.aspsolutions.GWTJSuite/8E997CB2F1E5E2F7BF75687812584FF1.cache.html' -H 'Cookie: JSESSIONID=D949D5A5B78EA4EEF453283118D0D5C7' -H 'Connection: keep-alive' --data-binary '<C1 N1="com.smart.src.taxvalle.taxinva.taxinva" HC="910141113" CP="F" MOC="LCSP" ><XD SI="" ><D N="DCRITERIOS" ><R ID="0" ST="I" ><F N="SuimNi01" V="JWF579" /></R></D><D N="DWEB" ><R ID="0" ST="I" /></D></XD><XV E4="29" MOC="LCSP" NTF="DCRITERIOS.LCSP" CP="F" /><M1 N1="processEvent" /></C1>' --compressed http://example.orgを得るが、私に

CURLOPT_HTTPHEADERに、 CURLOPT_POSTFIELDSIZE_LARGEをスキップすることができ
/********* Sample code generated by the curl command line tool ********** 
* All curl_easy_setopt() options are documented at: 
* https://curl.haxx.se/libcurl/c/curl_easy_setopt.html 
************************************************************************/ 
#include <curl/curl.h> 

int main(int argc, char *argv[]) 
{ 
    CURLcode ret; 
    CURL *hnd; 
    struct curl_slist *slist1; 

    slist1 = NULL; 
    slist1 = curl_slist_append(slist1, "Origin: http://vehiculos.valledelcauca.gov.co,Accept-Encoding: gzip, deflate"); 
    slist1 = curl_slist_append(slist1, "Accept-Language: es-ES,es;q=0.8"); 
    slist1 = curl_slist_append(slist1, "User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36"); 
    slist1 = curl_slist_append(slist1, "HC: 910141113"); 
    slist1 = curl_slist_append(slist1, "Content-Type: text/plain;charset=UTF-8"); 
    slist1 = curl_slist_append(slist1, "Accept: */*"); 
    slist1 = curl_slist_append(slist1, "Referer: http://vehiculos.valledelcauca.gov.co/post_smart_valle_prod/www/com.aspsolutions.GWTJSuite/8E997CB2F1E5E2F7BF75687812584FF1.cache.html"); 
    slist1 = curl_slist_append(slist1, "Cookie: JSESSIONID=D949D5A5B78EA4EEF453283118D0D5C7"); 
    slist1 = curl_slist_append(slist1, "Connection: keep-alive"); 

    hnd = curl_easy_init(); 
    curl_easy_setopt(hnd, CURLOPT_URL, "http://example.org"); 
    curl_easy_setopt(hnd, CURLOPT_NOPROGRESS, 1L); 
    curl_easy_setopt(hnd, CURLOPT_POSTFIELDS, "<C1 N1=\"com.smart.src.taxvalle.taxinva.taxinva\" HC=\"910141113\" CP=\"F\" MOC=\"LCSP\" ><XD SI=\"\" ><D N=\"DCRITERIOS\" ><R ID=\"0\" ST=\"I\" ><F N=\"SuimNi01\" V=\"JWF579\" /></R></D><D N=\"DWEB\" ><R ID=\"0\" ST=\"I\" /></D></XD><XV E4=\"29\" MOC=\"LCSP\" NTF=\"DCRITERIOS.LCSP\" CP=\"F\" /><M1 N1=\"processEvent\" /></C1>"); 
    curl_easy_setopt(hnd, CURLOPT_POSTFIELDSIZE_LARGE, (curl_off_t)291); 
    curl_easy_setopt(hnd, CURLOPT_USERAGENT, "curl/7.52.1"); 
    curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, slist1); 
    curl_easy_setopt(hnd, CURLOPT_MAXREDIRS, 50L); 
    curl_easy_setopt(hnd, CURLOPT_HTTP_VERSION, (long)CURL_HTTP_VERSION_2TLS); 
    curl_easy_setopt(hnd, CURLOPT_ACCEPT_ENCODING, ""); 
    curl_easy_setopt(hnd, CURLOPT_SSH_KNOWNHOSTS, "/root/.ssh/known_hosts"); 
    curl_easy_setopt(hnd, CURLOPT_TCP_KEEPALIVE, 1L); 

    /* Here is a list of options the curl code used that cannot get generated 
    as source easily. You may select to either not use them or implement 
    them yourself. 

    CURLOPT_WRITEDATA set to a objectpointer 
    CURLOPT_INTERLEAVEDATA set to a objectpointer 
    CURLOPT_WRITEFUNCTION set to a functionpointer 
    CURLOPT_READDATA set to a objectpointer 
    CURLOPT_READFUNCTION set to a functionpointer 
    CURLOPT_SEEKDATA set to a objectpointer 
    CURLOPT_SEEKFUNCTION set to a functionpointer 
    CURLOPT_ERRORBUFFER set to a objectpointer 
    CURLOPT_STDERR set to a objectpointer 
    CURLOPT_HEADERFUNCTION set to a functionpointer 
    CURLOPT_HEADERDATA set to a objectpointer 

    */ 

    ret = curl_easy_perform(hnd); 

    curl_easy_cleanup(hnd); 
    hnd = NULL; 
    curl_slist_free_all(slist1); 
    slist1 = NULL; 

    return (int)ret; 
} 
/**** End of sample code ****/ 

今、SLISTは、翻訳(libcurlのを与えることを固定し、または、自動的にそれを把握します)、PHPは自動的にNOPROGRESSを設定します。ほとんどの場合、PHPに変換されます。

それを翻訳(手動)PHPに、我々は、私はあなたのcurlコマンドをフェッチするためのURLが含まれていなかったにもいるので、コメントの中でいくつかの技術的VALIDが、可能性の高いエラーを述べた

<?php 
declare(strict_types = 1); 
$ch = curl_init (''); 

curl_setopt_array ($ch, array (
     CURLOPT_HTTPHEADER => array (
       "Origin: http://vehiculos.valledelcauca.gov.co,Accept-Encoding: gzip, deflate", // NOTE: Accept-Encoding is probably a typo and should not be there, but its in OP's curl -H command, so... what do i know 
       "Accept-Language: es-ES,es;q=0.8", 
       "HC: 910141113", 
       "Content-Type: text/plain;charset=UTF-8", 
       "Accept: */*", // actually, curl sends this by default on HTTP(S), so theres no need to set it manually 
       "Referer: http://vehiculos.valledelcauca.gov.co/post_smart_valle_prod/www/com.aspsolutions.GWTJSuite/8E997CB2F1E5E2F7BF75687812584FF1.cache.html", 
       "Cookie: JSESSIONID=D949D5A5B78EA4EEF453283118D0D5C7" 

     ), 
     CURLOPT_USERAGENT => 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36', 
     CURLOPT_URL => 'http://example.org', 
     CURLOPT_POSTFIELDS => '<C1 N1=\"com.smart.src.taxvalle.taxinva.taxinva\" HC=\"910141113\" CP=\"F\" MOC=\"LCSP\" ><XD SI=\"\" ><D N=\"DCRITERIOS\" ><R ID=\"0\" ST=\"I\" ><F N=\"SuimNi01\" V=\"JWF579\" /></R></D><D N=\"DWEB\" ><R ID=\"0\" ST=\"I\" /></D></XD><XV E4=\"29\" MOC=\"LCSP\" NTF=\"DCRITERIOS.LCSP\" CP=\"F\" /><M1 N1=\"processEvent\" /></C1>', 
     CURLOPT_FOLLOWLOCATION => true, 
     CURLOPT_ENCODING => '', // this is --compressed 
     CURLOPT_SSH_KNOWNHOSTS => '/root/.ssh/known_hosts', 
     CURLOPT_VERBOSE => true // good for debugging. 
)); 
curl_exec ($ch); 
curl_close($ch); 

ノートを入手します私はexample.orgを追加しました。また、/root/.ssh/known_hostsは私のマシンに固有のものです。おそらくそれを変更したいのですが(あるいはCURLOPT_VERIFYPEER => false、CURLOPT_VERIFYHOST => falseに設定してSSL証明書を検証する必要はありません)

+0

友人、返信いただきありがとうございます。あなたがPHPの専門家であると言っても過言ではありません –

関連する問題