(错误检测部分没有加入)
1:get方式
CHttpClient conn
CString value="http://8crystal.com/test.asp"
value=conn.doGet(value)
2:post方式
CHttpClient conn
CString value="http://8crystal.com/test.asp"
conn.addParam("name1","value1")
conn.addParam("name2","value2")
conn.addParam("name3","value3")
conn.addParam("name4","value4")
conn.addParam("name5","value5")
conn.addParam("name6","value6")
value=conn.doPost(value)
// HttpClient.h: interface for the CHttpClient class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_HTTPCLIENT_H__EA769DCB_AAB9_47CD_BD87_FBD6913592C5__INCLUDED_)
#define AFX_HTTPCLIENT_H__EA769DCB_AAB9_47CD_BD87_FBD6913592C5__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "wininet.h"
#include "afxinet.h"
class CHttpClient
{
public:
void addParam(CString name,CString value)
CString doPost(CString href)
CString doGet(CString href)
CHttpClient()
virtual ~CHttpClient()
private:
CString CONTENT
int CL
CStringList values
CStringList names
}
#endif // !defined(AFX_HTTPCLIENT_H__EA769DCB_AAB9_47CD_BD87_FBD6913592C5__INCLUDED_)
++++++++++++++++++++++++++++++++++++++
// HttpClient.cpp: implementation of the CHttpClient class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "emailsenderv2.h"
#include "HttpClient.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CHttpClient::CHttpClient()
{
}
CHttpClient::~CHttpClient()
{
}
CString CHttpClient::doGet(CString href)
{
CString httpsource=""
CInternetSession session1(NULL,0)
CHttpFile* pHTTPFile=NULL
try{
pHTTPFile=(CHttpFile*)session1.OpenURL(href)
//session1.
}catch(CInternetException){
pHTTPFile=NULL
}
if(pHTTPFile)
{
CString text
for(int i=0pHTTPFile->ReadString(text)i++)
{
httpsource=httpsource+text+"rn"
}
pHTTPFile->Close()
delete pHTTPFile
}else
{
}
return httpsource
}
CString CHttpClient::doPost(CString href)
{
CString httpsource=""
CInternetSession session1
CHttpConnection* conn1=NULL
CHttpFile* pFile = NULL
CString strServerName
CString strObject
INTERNET_PORT nPort
DWORD dwServiceType
AfxParseURL((LPCTSTR)href,dwServiceType, strServerName, strObject, nPort)
DWORD retcode
char* outBuff = CONTENT.GetBuffer(1000)
try
{
conn1 = session1.GetHttpConnection(strServerName,nPort)
pFile = conn1->OpenRequest(0,strObject,NULL,1,NULL,"HTTP/1.1",INTERNET_FLAG_EXISTING_CONNECT|INTERNET_FLAG_NO_AUTO_REDIRECT)
pFile -> AddRequestHeaders("Content-Type: application/x-www-form-urlencoded")
pFile -> AddRequestHeaders("Accept: */*")
pFile -> SendRequest(NULL,0,outBuff,strlen(outBuff)+1)
pFile -> QueryInfoStatusCode(retcode)
}
catch (CInternetException * e){}
if(pFile)
{
CString text
for(int i=0pFile->ReadString(text)i++)
{
httpsource=httpsource+text+"rn"
}
pFile->Close()
}else
{
}
return httpsource
delete pFile
delete conn1
session1.Close()
}
void CHttpClient::addParam(CString name, CString value)
{
names.AddTail((LPCTSTR)name)
values.AddTail((LPCTSTR)value)
CString eq="="
CString an="&"
CONTENT=CONTENT+name+eq+value+an
CL=CONTENT.GetLength()
}
CHttpFileCHttpConnection
CInternetSession
MFC中使用这个几个类来实现HTTP协议的数据传输。
具体使用方法看MSDN吧,网上搜索也能搜到例子,我就不贴代码了。
方法把指定JAR文件的全部内容装入到一个杂凑表(hashtable)中(杂凑表名可以从资源名进行访问)init()是一个功能相当强大的方法,让我们来逐步理解它的功能。ZipFile类使我们基本上能访问JAR/Zip压缩文档的头部信息。
这和一个文件系统的目录信息相似。在这里我们列出Zip文件的所有条目(entry),并且按照文档中的每个资源的尺寸创建htSizes杂凑表(hashtable)。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)