2010-07-04 9 views
10

Tôi đang sử dụng CURL C++ api để nhận báo giá từ API tài chính của Yahoo. Các api curl và mã của tôi dường như được làm việc tốt, tuy nhiên tôi nhận được một thông báo chuyển hướng "301" khi tôi nói với CURL để truy cập vào url tôi muốn. Tôi làm cách nào để có được CURL thực hiện theo chuyển hướng 301 và nhận dữ liệu tôi muốn?CURL không theo 301 Chuyển hướng, tôi cần phải làm gì?

Dưới đây là URL Tôi đang sử dụng:

http://download.finance.yahoo.com/d/quotes.csv?e=.csv&s=WSF,WSH&f=b2b3s 

Dưới đây là câu trả lời tôi nhận được:

<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> 

Dưới đây là tùy chọn init CURL tôi

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); 

tôi didn' t đăng mã của tôi, vì nó là tất cả làm việc, tôi chỉ cần phương pháp chung sau đây thông qua woth 301's với CURL.

Trả lời

13

Trong thế giới PHP, tùy chọn có tên là CURLOPT_FOLLOWLOCATION. Tôi giả sử các tên không đổi được chuẩn hóa và đến từ cùng một tệp tiêu đề, vì vậy điều này sẽ phù hợp với bạn.

curl_easy_setopt(eh, CURLOPT_FOLLOWLOCATION, 1); 

(hoặc bất cứ điều gì "boolean true" là trong bối cảnh này.)

Ngoài ra, khi nhận được một mã số 30x trạng thái, bạn có thể phân tích các Location tiêu đề bằng tay cho các địa chỉ mới. Rõ ràng là, tùy chọn "theo dõi vị trí" dễ dàng hơn nhiều, vì nó không yêu cầu yêu cầu thứ hai.