我正在使用CURL c api从雅虎的财务API获取报价.卷曲api和我的代码似乎工作正常,但是当我告诉CURL访问我想要的URL时,我收到一个“301”重定向消息.如何让CURL跟进301重定向并获取我想要的数据?
这是我使用的网址:
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>
这是我的CURL 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,CURLOPT_VERBOSE,0L); curl_multi_add_handle(cm,eh);
解决方法
@H_404_19@ 在PHP世界中,该选项名为CURLOPT_FOLLOWLOCATION.我认为常数名称是标准化的,来自相同的头文件,所以这应该适合你.curl_easy_setopt(eh,CURLOPT_FOLLOWLOCATION,1);
(或在此上下文中为“布尔true”).
或者,当接收到30x状态代码时,您可以手动解析新地址的“位置”标题.显然,“跟随位置”选项更容易,因为它不需要第二个请求.