vc++-mfc-实现网站发布文章ping百度,加快文章收录
// http 链接变量
CHttpConnection * m_http;
CInternetSession CIS;
CString strPingBaidu;
strPingBaidu = "ping.baidu.com";
CString strPingPath;
strPingPath = "ping/RPC2";
pdlg->m_http = CIS.GetHttpConnection(strPingBaidu) ;
CHttpFile * pHttpFile = NULL;
/*
CHttpFile* OpenRequest(
LPCTSTR pstrVerb,//get or post .A pointer to a string containing the verb to use in the request. If NULL, "GET" is used.
LPCTSTR pstrObjectName,//提交站点内地址
LPCTSTR pstrReferer = NULL,//请求参数字符串
DWORD_PTR dwContext = 1,//返回状态码
LPCTSTR* ppstrAcceptTypes = NULL,//返回的字符串
LPCTSTR pstrVersion = NULL,//A pointer to a string defining the HTTP version. If NULL, "HTTP/1.0" is used.
DWORD dwFlags = INTERNET_FLAG_EXISTING_CONNECT
);
*/
pHttpFile = pdlg->m_http->OpenRequest(CHttpConnection::HTTP_VERB_POST,
strPingPath,//"test/test.php",
NULL,
1,
NULL,
NULL,
INTERNET_FLAG_EXISTING_CONNECT);
//发送header
//pHttpFile->AddRequestHeaders("Content-Type:application/x-www-form-urlencoded");
//pHttpFile->AddRequestHeaders("Accept:*/*");
/*
POST /ping/RPC2 HTTP/1.0
User-Agent: request
Host: ping.baidu.com
Content-Type: text/xml
Content-Length: 511
*/
pHttpFile->AddRequestHeaders("POST /ping/RPC2 HTTP/1.0");
pHttpFile->AddRequestHeaders("User-Agent: request");
pHttpFile->AddRequestHeaders("Host: ping.baidu.com");
pHttpFile->AddRequestHeaders("Content-Type: text/xml");
//发送请求
//这个是post的
CString strBlogName,strBlogIndexURL,strNewArticleURL,strRssURL;
strBlogName = pdlg->m_CtrlRequestURLInfo.GetItemText(j,1);
strBlogIndexURL = pdlg->m_CtrlRequestURLInfo.GetItemText(j,1);
strNewArticleURL = strURL;
strRssURL = "";
CString strPost;
strPost = GetPingCString(strBlogName,strBlogIndexURL,strNewArticleURL,strRssURL);
//strPost = pdlg->GetPingCString("d","d","d","d"); //post的数据
//strPost = "sdafdfsadf"; //post的数据
//pHttpFile->SendRequest(NULL,0,(LPVOID)(LPCTSTR)strPost,strPost.GetLength());
//if (pHttpFile->SendRequest(NULL,0,NULL,0))
if(pHttpFile->SendRequest(NULL,0,(LPVOID)(LPCTSTR)strPost,strPost.GetLength()))
{
//成功
DWORD retcode;
pHttpFile->QueryInfoStatusCode(retcode);
CString strReturn;
if (retcode == 200)
{
//一行一行的读出来
CString strLine;
while(pHttpFile->ReadString(strLine))
{
strReturn = strReturn + strLine + "\n";
}
pdlg->AddStatus(strReturn);
//显示出结果
if (strReturn.Replace("0","ok")==1)
{
//能替换一个,说明返回的是0,也就是说提交成功了
pdlg->m_CtrlBaiduPing.SetItemText(pdlg->m_CtrlBaiduPing.GetItemCount()-1,2,"是");
pdlg->AddStatus("Ping百度成功");
}
else if (strReturn.Replace("1","ok")==1)
{
pdlg->AddStatus("Ping百度失败");
}
//pdlg->AddStatus(strReturn);
//AfxMessageBox(strReturn);
}
}
else
{
//失败
pdlg->AddStatus("send request 失败");
}
自己自定义的一个函数
CString GetPingCString(CString blogname, CString blogindexurl, CString newarticleurl, CString rssurl)
{
/*
POST /ping/RPC2 HTTP/1.0
User-Agent: request
Host: ping.baidu.com
Content-Type: text/xml
Content-Length: 511
weblogUpdates.extendedPing百度的空间http://hi.baidu.com/baidu/http://baidu.com/blog/example.html
http://hi.baidu.com/baidu/rss
*/
CString strReturn;
strReturn =
strReturn = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
strReturn = strReturn + "<methodCall><methodName>weblogUpdates.extendedPing</methodName><params><param><value><string>" + blogname + \
"</string></value></param><param><value><string>" + blogindexurl + "</string></value></param><param><value><string>" + newarticleurl +\
"</string></value></param><param><value><string>" + rssurl + "</string></value></param></params></methodCall>";
return strReturn;
}