カールは具体的には、あなたのための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証明書を検証する必要はありません)
友人、返信いただきありがとうございます。あなたがPHPの専門家であると言っても過言ではありません –