新浪微博的C++代码,哪个能用BCB实现?

jone7319 2011-10-21 06:01:24

bool SinaSDK::Upload(QString &imagepath, QString &msg)
{
//Check File Existed
if(!Tool::check_file_existed(q2s(imagepath).c_str()))
{
qDebug()<< "File Not Existed.";
return false;
}
//Check File Size
char* fdata;
long fSize = Tool::readfile(&fdata , q2s(imagepath).c_str() );
qDebug()<<fSize;
if( Tool::get_file_size(q2s(imagepath).c_str()) >= 1048576*5||fSize<1)
{
qDebug()<< "File Size is Big.";
return false;
}
struct curl_httppost *postt=NULL;
struct curl_httppost *last=NULL;
CURLcode code;
CURL *curl;
curl_global_init(CURL_GLOBAL_ALL);
curl=curl_easy_init();
QString req_url =s2q("http://api.t.sina.com.cn/statuses/upload.json");
QString post =s2q("POST");
QString oauth_nonce =s2q(oauth_gen_nonce());
QString oauth_timestamp = QString::number((long int) time(NULL));
QString oauth_version ="1.0";
QString basestr = post+s2q("&")+oauth_url_escape(q2s(req_url).c_str())+s2q("&")+s2q("oauth_consumer_key%3D")+m_appkey
+s2q("%26oauth_nonce%3D")+oauth_nonce
+s2q("%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D")+oauth_timestamp
+s2q("%26oauth_token%3D")+GetAccess_token()
+s2q("%26oauth_version%3D1.0")
+s2q("%26source%3D")+m_appkey
+s2q("%26status%3D")+msg;
char* out =oauth_sign_hmac_sha1(q2s(basestr).c_str(),q2s(m_secretkey+s2q("&")+GetAccess_token_secret()).c_str());

curl_formadd(&postt, &last, CURLFORM_COPYNAME, "oauth_consumer_key", CURLFORM_COPYCONTENTS, q2s(m_appkey).c_str(), CURLFORM_END);
curl_formadd(&postt, &last, CURLFORM_COPYNAME, "oauth_nonce", CURLFORM_COPYCONTENTS, q2s(oauth_nonce).c_str(), CURLFORM_END);
curl_formadd(&postt, &last, CURLFORM_COPYNAME, "oauth_signature_method", CURLFORM_COPYCONTENTS, "HMAC-SHA1", CURLFORM_END);
curl_formadd(&postt, &last, CURLFORM_COPYNAME, "oauth_timestamp", CURLFORM_COPYCONTENTS, q2s(oauth_timestamp).c_str(), CURLFORM_END);
curl_formadd(&postt, &last, CURLFORM_COPYNAME, "oauth_token", CURLFORM_COPYCONTENTS, q2s(GetAccess_token()).c_str(), CURLFORM_END);
curl_formadd(&postt, &last, CURLFORM_COPYNAME, "oauth_version", CURLFORM_COPYCONTENTS, "1.0", CURLFORM_END);
curl_formadd(&postt, &last, CURLFORM_COPYNAME, "source", CURLFORM_COPYCONTENTS, q2s(m_appkey).c_str(), CURLFORM_END);
curl_formadd(&postt, &last, CURLFORM_COPYNAME, "status", CURLFORM_COPYCONTENTS, q2s(msg).c_str(), CURLFORM_END);
curl_formadd(&postt, &last, CURLFORM_COPYNAME, "oauth_signature", CURLFORM_COPYCONTENTS, out, CURLFORM_END);

if( curl_formadd(&postt, &last, CURLFORM_COPYNAME, "pic",CURLFORM_FILE, q2s(imagepath).c_str(), CURLFORM_END) != 0)
{
curl_formfree(postt);
return false;
}
if(curl == NULL)
{
curl_formfree(postt);
return false;
}
curl_easy_setopt(curl, CURLOPT_URL, q2s(req_url).c_str());
curl_easy_setopt(curl, CURLOPT_HTTPPOST, postt);
curl_easy_setopt(curl, CURLOPT_USERAGENT, "Weibo SDK/1.0");
curl_easy_setopt(curl, CURLOPT_TIMEOUT, 50);
head.clear();
curl_easy_setopt( curl, CURLOPT_HEADERFUNCTION, header_callback);
buffer.clear();
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writer); //
curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
code = curl_easy_perform(curl);
if (code != CURLE_OK)
{
return false;
}
string headtok = " " ;
vector<string> hv = Tool::tokenize(q2s(head), headtok ,true);
if(!(hv.size()>2&&hv[1]=="200"))
{
return false;
}
curl_easy_cleanup(curl);
return true;
}

...全文
474 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
tongking 2011-11-04
  • 打赏
  • 举报
回复
原来的代码应该是qt和libcurl实现的。
jone7319 2011-11-03
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 cngoodman 的回复:]
引用 14 楼 jone7319 的回复:

引用 13 楼 cngoodman 的回复:
熟悉http协议就行,用什么语言工具的无所谓

楼上,这个可能不是Httpl协议的问题吧


组装HTTP协议->发出->等待->返回200->OK
[/Quote]

我在做飞信应用时是这样做的。你讲的可能是抓包分析吧,我试过,新浪微博的登录验证太复杂了,根本破解不了。
cngoodman 2011-11-02
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 jone7319 的回复:]

引用 13 楼 cngoodman 的回复:
熟悉http协议就行,用什么语言工具的无所谓

楼上,这个可能不是Httpl协议的问题吧
[/Quote]

组装HTTP协议->发出->等待->返回200->OK
jone7319 2011-11-01
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 cngoodman 的回复:]
熟悉http协议就行,用什么语言工具的无所谓
[/Quote]
楼上,这个可能不是Httpl协议的问题吧
cngoodman 2011-10-31
  • 打赏
  • 举报
回复
熟悉http协议就行,用什么语言工具的无所谓
tulipcaicai 2011-10-24
  • 打赏
  • 举报
回复
有情帮顶吧
jone7319 2011-10-24
  • 打赏
  • 举报
回复
有人懂么?
chinayu2007 2011-10-22
  • 打赏
  • 举报
回复
新浪微博,干什么的?不懂
dfdscx 2011-10-22
  • 打赏
  • 举报
回复
围观下
cankoo 2011-10-22
  • 打赏
  • 举报
回复
QString ?难道是QT ???
jone7319 2011-10-21
  • 打赏
  • 举报
回复
有人做过么?希望妖兄在有空的时间帮看看!
cgl_lgs 2011-10-21
  • 打赏
  • 举报
回复
试试找找:
新浪微博 JSON
再了解了解:
http://www.linuxso.com/linuxbiancheng/2736.html
希望对你有所帮助:)
zzbinfo 2011-10-21
  • 打赏
  • 举报
回复
我不懂这些,还是麻烦妖哥动动手吧.
jone7319 2011-10-21
  • 打赏
  • 举报
回复
呼叫zzbinfo
ccrun.com 2011-10-21
  • 打赏
  • 举报
回复
我在,这个需求能实现,不过我现在没时间。让zzbinfo大牛来帮你吧。
jone7319 2011-10-21
  • 打赏
  • 举报
回复
老妖帮看一下是否能用BCB实现,现在想做一个自动更新微博的应用。

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧