URL 分成各种组件基于 URL 细分和规范

第一步:  
将 URL 分成各种组件基于 URL 细分和规范.

BOOL WINAPI InternetCrackUrl(
IN LPCTSTR lpszUrl,
IN DWORD dwUrlLength,
IN DWORD dwFlags,
IN LPURL_COMPONENTS lpUrlComponents);

第二步:
初始化WININET.DLL.

HINTERNET WINAPI InternetOpen(
LPCTSTR lpszAgent,   //指定正在使用网路函数的利用程序。当Http协定使用时,将变成用户代理。
DWORD dwAccessType, //指定拜访的类型。
                                     //INTERNE_OPEN_TYPE_PRECONFIG  从注册处重新获得代理服务器或直接配置。
LPCTSTR lpszProxy,  //代理,为NULL,函数从注册处读代替理信息。
LPCTSTR lpszProxyBypass,//代理旁路,为NULL,函数从注册处读取旁路列表。
DWORD dwFlags);  //标志。

例子:
hOpen = InternetOpen (TEXT("Mozilla/4.0 (compatible; )"), INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);

第三步:
衔接到一个HTTP.

HINTERNET WINAPI InternetConnect(
HINTERNET hInternet, //从InternetOpen返回的句柄。
LPCTSTR lpszServerName,美女视频聊天, //提供了服务器的地址
INTERNET_PORT nServerPort, //服务器端口
LPCTSTR lpszUserName, //用户名,一般为NULL.
LPCTSTR lpszPassword, //密码,一般为NULL.
DWORD dwService, //服务类型。
                              //INTERNET_SERVICE_FTP   FTP服务、INTERNET_SERVICE_HTTP   HTTP服务
DWORD dwFlags, //标志
DWORD dwContext); //为利用程序定义的值,激情视频聊天,用来为返回的句柄标识运用程序装备场景。
例子:
hConnect = InternetConnect (hOpen, szServer, u_com.nPort, NULL, NULL, INTERNET_SERVICE_HTTP, 0, NULL);


第四步:
创立一个恳求句柄并且把参数存储在句柄中.
HINTERNET WINAPI HttpOpenRequest(
HINTERNET hConnect,     //从Internet Connect 返回的句柄
LPCTSTR lpszVerb,        //设为TEXT("GET"),指定wo们想要得到由第三参数的命名的对象。
LPCTSTR lpszObjectName, //指定动作的目的对象名称的字符串。
LPCTSTR lpszVersion,       //为NULL,则默以为"HTTP/1.0"
LPCTSTR lpszReferrer,     //一个网点地址,在这网点上wo们发明了wo们现在想要看见的Url,通常NULL
LPCTSTR *lplpszAcceptTypes, //wo们程序接收的文件类型。
DWORD dwFlags, //INTERNET_FLAG_NO_RELOAD 永远不支撑从电报和高速缓存来的数据。
                           //INTERNET_FLAG_NO_CACHE_WRIE 不添加能力够高速缓存返回的实体。
DWORD dwContext );
例子:
hRequest = HttpOpenRequest (hConnect, TEXT("GET"), szObject, NULL, NULL, (LPCTSTR*)AcceptTypes, INTERNET_FLAG_RELOAD | INTERNET_FLAG_NO_CACHE_WRITE, 0);
//AcceptTypes[2]={TEXT("Accept:*/*/r/n/r/n"),NULL}


第五步:
添加报头信息(http协定).

BOOL WINAPI HttpAddRequestHeaders(
HINTERNET hHttpRequest,    //HttpOpenRequest返回的句柄。
LPCTSTR lpszHeaders,        //报头.
DWORD dwHeadersLength,    //报头大小 。
DWORD dwModifiers);           //指定一个值,改动函数的语意。
//HTTP_ADDREQ_FLAG_REPLACE 替换和移除一个报头,如果这个报头的值为空并且被树立。移除报头,如果这个报头非空,取代报头。
//HTTP_ADDREQ_FLAG_ADD 增添一个报头,如果它不存在和HTTP_ADDREQ_FLAG_REPLACE一起使用。
例子:
bRet=HttpAddRequestHeaders( hRequest,szHead, strlen(szHead),HTTP_ADDREQ_FLAG_REPLACE);
//szHead[]="Accept:*/*/r/n/r/n"

改动报头,添加断点的机密就在这里。
增添断点例子(加在HttpAddRequestHeaders之后):
if (dwSizeExist>0)                 //断定是否有下载
{
  char szSize[1024] = {0};
  sprintf (szSize, "Range:bytes=%d-", dwSizeExist);  ,成人聊天室;   //增添报头,设置下载的范畴。从dwSizeExist到结尾。
  HttpAddRequestHeaders(hRequest,szSize, strlen(szSize),HTTP_ADDREQ_FLAG_ADD );
}

第六步:
把恳求参数送到HTTP服务器,传送额外的HTTP题目给服务器.

BOOL WINAPI HttpSendRequest(
HINTERNET hRequest,
LPCTSTR lpszHeaders,
DWORD dwHeadersLength,
LPVOID lpOptional,
DWORD dwOptionalLength);
例子:
bRet=HttpSendRequest (hRequest, NULL, 0, NULL, 0);

第七步:
得到关于文件的信息

BOOL WINAPI HttpQueryInfo(
HINTERNET hRequest,
DWORD dwInfoLevel,
LPVOID lpBuffer,
LPDWORD lpdwBufferLength,
LPDWORD lpdwIndex);

第八步:
读文件内容

BOOL WINAPI InternetReadFile(
IN HINTERNET hFile,
IN LPVOID lpBuffer,
IN DWORD dwNumberOfBytesToRead,
OUT LPDWORD lpdwNumberOfBytesRead;

第九步:
关闭句柄

BOOL WINAPI InternetCloseHandle(
HINTERNET hInternet);

编写程序的一点心得!怕本身忘了。所以写下来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值