在VC中WININET如何使用HTTP的POST方法

王婷蓝

王婷蓝

2016-02-19 21:05

下面是个超简单的在VC中WININET如何使用HTTP的POST方法教程,图老师小编精心挑选推荐,大家行行好,多给几个赞吧,小编吐血跪求~

SUMMARY
    To properly simulate a Form submission using WinInet, you need to send a header that indicates the proper Content-Type. For Forms, the proper Content-Type header is: Content-Type: application/x-www-form-urlencoded
    
    MORE INFORMATION
    In many cases, the server does not respond appropriately if a Content-Type is not specified. For example, the Active Server Pages component of IIS 3.0 actually checks this header specifically for 'application/x-www-form- urlencoded' before adding form variables to the "Request.Form" object. This MIME/Content-Type indicates that the data of the request is a list of URL- encoded form variables. URL-encoding means that space character (ASCII 32) is encoded as '+', special character such '!' encoded in hexadecemal form as '%21'.
    
    Here is a snippet of code that uses the MFC WinInet classes to simulate a Form POST request:
     CString strHeaders =
     _T("Content-Type: application/x-www-form-urlencoded");
     // URL-encoded form variables -
     // name = "John Doe", userid = "hithere", other = "P&Q"
     CString strFormData = _T("name=John+Doe&userid=hithere&other=P%26Q");
    
     CInternetSession session;
     CHttpConnection* pConnection =
     session.GetHttpConnection(_T("ServerNameHere"));
     CHttpFile* pFile =
     pConnection-OpenRequest(CHttpConnection::HTTP_VERB_POST,
     _T("FormActionHere"));
     BOOL result = pFile-SendRequest(strHeaders,
     (LPVOID)(LPCTSTR)strFormData, strFormData.GetLength());
    
    
    Without MFC, the same code translates to straight SDK calls as follows:
     static TCHAR hdrs[] =
     _T("Content-Type: application/x-www-form-urlencoded");
     static TCHAR frmdata[] =
     _T("name=John+Doe&userid=hithere&other=P%26Q");
     statuc TCHAR accept[] =
     _T("Accept: */*");
    
     // for clarity, error-checking has been removed
     HINTERNET hSession = InternetOpen("MyAgent",
     INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
     HINTERNET hConnect = InternetConnect(hSession, _T("ServerNameHere"),
     INTERNET_DEFAULT_HTTP_PORT, NULL, NULL, INTERNET_SERVICE_HTTP, 0, 1);
     HINTERNET hRequest = HttpOpenRequest(hConnect, "POST",
     _T("FormActionHere"), NULL, NULL, accept, 0, 1);
     HttpSendRequest(hRequest, hdrs, strlen(hdrs), frmdata, strlen(frmdata));
     // close any valid internet-handles 

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)
展开更多 50%)
分享

猜你喜欢

在VC中WININET如何使用HTTP的POST方法

编程语言 网络编程
在VC中WININET如何使用HTTP的POST方法

在jsp中作HTTP认证的方法

Java JAVA基础
在jsp中作HTTP认证的方法

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

在ASP中操作HTTP报头方法分析

ASP
在ASP中操作HTTP报头方法分析

VC实现简单Http连接

编程语言 网络编程
VC实现简单Http连接

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

VC通过HTTP方式获取网页

编程语言 网络编程
VC通过HTTP方式获取网页

在vc6.0中使用GDI+图形函数

编程语言 网络编程
在vc6.0中使用GDI+图形函数

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

VC中加载LIB文件的方法

VC中加载LIB文件的方法

vc模拟鼠标键盘操作实用类

vc模拟鼠标键盘操作实用类
下拉加载更多内容 ↓