Я использую ВИХРЕВОЙ API C++ для получения кавычек от финансового API Yahoo. Вихревой API и мой код, кажется, хорошо работают, однако я добираюсь "301" сообщение перенаправления, когда я говорю ЗАВИХРЕНИЮ посещать URL, что я хочу. Как я могу заставить ЗАВИХРЕНИЕ следовать до этого 301 перенаправления и получать данные, которые я хочу?
Вот URL, который я использую:
http://download.finance.yahoo.com/d/quotes.csv?e=.csv&s=WSF,WSH&f=b2b3s
Вот ответ, который я получаю:
<HEAD><TITLE>Redirect</TITLE></HEAD>
<BODY BGCOLOR="white" FGCOLOR="black">
<FONT FACE="Helvetica,Arial"><B>
"<em>http://download.finance.yahoo.com/d/quotes.csv?e=.csv&s=WSF,WSH,WSM,WSO,WST,WTI,WTM,WTR,WTS,WTU,WTW,WU,WWE,WWW,WX,WXS,WY,WYN,X,XAA,XCJ,XCO,XEC,XEL,XEL-A,XEL-E,XFB,XFD,XFH,XFJ,XFP,XFR,XIN,XJT,XKE,XKK,XKN,XKO,XL,XL-Y,XOM,XRM,XRX,XVF,XVG,Y,YGE,YPF,YSI,YUM,YZC,ZB-A,ZB-B,ZB-C,ZEP,ZF,ZLC,ZMH,ZNH,ZQK,ZTR,ZZ,ZZC&f=b2b3ccd1d2ghjkk2k3l2l3mm2m3m4m5m6m7m8opst7vw</em>".<p></B></FONT>
<!-- default "Redirect" response (301) -->
</BODY>
Вот является мое ЗАВИХРЕНИЕ init опциями
CURL *eh = curl_easy_init();
curl_easy_setopt(eh, CURLOPT_WRITEFUNCTION, cb);
curl_easy_setopt(eh, CURLOPT_HEADER, 0L);
curl_easy_setopt(eh, CURLOPT_URL, url);
curl_easy_setopt(eh, CURLOPT_PRIVATE, url);
curl_easy_setopt(eh, CURLOPT_VERBOSE, 0L);
curl_multi_add_handle(cm, eh);
Я не отправил свой код, поскольку он все работает, мне просто нужен общий метод выполнения woth 301's с ЗАВИХРЕНИЕМ.
В мире PHP параметр называется CURLOPT_FOLLOWLOCATION
. Я предполагаю, что имена констант стандартизированы и взяты из одного файла заголовка, так что это должно сработать для вас.
curl_easy_setopt(eh, CURLOPT_FOLLOWLOCATION, 1);
(или любое другое «логическое истинное значение» в этом контексте.)
В качестве альтернативы, при получении кода состояния 30x
вы можете вручную проанализировать заголовок Location
на предмет нового адрес. Очевидно, однако, что вариант «следить за местоположением» намного проще, так как не требует второго запроса.