MFC的: void post() { CInternetSession session("My Session"); CHttpConnection* pServer = NULL; CHttpFile* pFile = NULL; CString ServerName = "webmail.21cn.com"; INTERNET_PORT nPort = 80; DWORD retcode; char outBuff[300] = "LoginName=aaa&passwd=xxx&DomainName=21cn.com";//I have test this with my loginname and password try { pServer = session.GetHttpConnection(ServerName,nPort); pFile = pServer->OpenRequest(CHttpConnection::HTTP_VERB_POST,"/NULL/NULL/NULL/NULL/NULL/SignIn.gen",NULL,1,NULL,NULL,INTERNET_FLAG_EXISTING_CONNECT); pFile -> AddRequestHeaders("Content-Type: application/x-www-form-urlencoded"); pFile -> AddRequestHeaders("Accept: */*"); pFile -> SendRequest(NULL,0,outBuff,strlen(outBuff)+1); pFile -> QueryInfoStatusCode(retcode); // you can read from the file after this......I've just left it out. for(int i=0;i<10;i++)//read ten line of returned HTML,you need to edit this to use the result { CString smsg; pFile->ReadString(smsg); AfxMessageBox(smsg); } DWORD dwlen=pFile->GetLength(); char buf[1024]; DWORD dwread=pFile->Read(buf,1024); } catch (CInternetException * e){}; delete pFile; delete pServer; session.Close(); }
socket的: /////////////////////////////////////////////////////////////////////////// //SDK post /////////////////////////////////////////////////////////////////////////// #include "stdafx.h" #include "winsock.h" #pragma comment(lib,"ws2_32.lib") #define winsock_version 0x0101 void main() { //I create C:\Inetpub\wwwroot\test\test.asp ,start the web service //start my program, the result is OK. //If it works,it is written by masterz,otherwise I don't know who write it. SOCKADDR_IN saServer; LPHOSTENT lphostent; WSADATA wsadata; SOCKET hsocket; int nRet; const char* host_name="127.0.0.1"; char* req="POST /test/test.asp HTTP/1.0\r\n" "From: local\r\n" "User-Agent: post_test/1.0\r\n" "Content-Type: application/x-www-form-urlencoded\r\n" "Content-Length: 20\r\n\r\n" "type=12345&name=aaaa"; if(WSAStartup(winsock_version,&wsadata)) printf("can't initial socket"); lphostent=gethostbyname(host_name); if(lphostent==NULL) printf("lphostent is null"); hsocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); saServer.sin_family = AF_INET; // Use def. now, need to handle general case saServer.sin_port = htons(80); saServer.sin_addr = *((LPIN_ADDR)*lphostent->h_addr_list); nRet = connect(hsocket, (LPSOCKADDR)&saServer, sizeof(SOCKADDR_IN)); if (nRet == SOCKET_ERROR) { printf("can't connect"); closesocket(hsocket); return; } else printf("connected with %s\n",host_name); nRet = send(hsocket, req, strlen(req), 0); if (nRet == SOCKET_ERROR) { printf("send() failed"); closesocket(hsocket);
void post()
{
CInternetSession session("My Session");
CHttpConnection* pServer = NULL;
CHttpFile* pFile = NULL;
CString ServerName = "webmail.21cn.com";
INTERNET_PORT nPort = 80;
DWORD retcode;
char outBuff[300] = "LoginName=aaa&passwd=xxx&DomainName=21cn.com";//I have test this with my loginname and password
try
{
pServer = session.GetHttpConnection(ServerName,nPort);
pFile = pServer->OpenRequest(CHttpConnection::HTTP_VERB_POST,"/NULL/NULL/NULL/NULL/NULL/SignIn.gen",NULL,1,NULL,NULL,INTERNET_FLAG_EXISTING_CONNECT);
pFile -> AddRequestHeaders("Content-Type: application/x-www-form-urlencoded");
pFile -> AddRequestHeaders("Accept: */*");
pFile -> SendRequest(NULL,0,outBuff,strlen(outBuff)+1);
pFile -> QueryInfoStatusCode(retcode);
// you can read from the file after this......I've just left it out.
for(int i=0;i<10;i++)//read ten line of returned HTML,you need to edit this to use the result
{
CString smsg;
pFile->ReadString(smsg);
AfxMessageBox(smsg);
}
DWORD dwlen=pFile->GetLength();
char buf[1024];
DWORD dwread=pFile->Read(buf,1024);
}
catch (CInternetException * e){};
delete pFile;
delete pServer;
session.Close();
}
///////////////////////////////////////////////////////////////////////////
//SDK post
///////////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "winsock.h"
#pragma comment(lib,"ws2_32.lib")
#define winsock_version 0x0101
void main()
{
//I create C:\Inetpub\wwwroot\test\test.asp ,start the web service
//start my program, the result is OK.
//If it works,it is written by masterz,otherwise I don't know who write it.
SOCKADDR_IN saServer;
LPHOSTENT lphostent;
WSADATA wsadata;
SOCKET hsocket;
int nRet;
const char* host_name="127.0.0.1";
char* req="POST /test/test.asp HTTP/1.0\r\n"
"From: local\r\n"
"User-Agent: post_test/1.0\r\n"
"Content-Type: application/x-www-form-urlencoded\r\n"
"Content-Length: 20\r\n\r\n"
"type=12345&name=aaaa";
if(WSAStartup(winsock_version,&wsadata))
printf("can't initial socket");
lphostent=gethostbyname(host_name);
if(lphostent==NULL)
printf("lphostent is null");
hsocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
saServer.sin_family = AF_INET;
// Use def. now, need to handle general case
saServer.sin_port = htons(80);
saServer.sin_addr = *((LPIN_ADDR)*lphostent->h_addr_list);
nRet = connect(hsocket, (LPSOCKADDR)&saServer, sizeof(SOCKADDR_IN));
if (nRet == SOCKET_ERROR)
{
printf("can't connect");
closesocket(hsocket);
return;
}
else
printf("connected with %s\n",host_name);
nRet = send(hsocket, req, strlen(req), 0);
if (nRet == SOCKET_ERROR)
{
printf("send() failed");
closesocket(hsocket);
}
else
printf("send() OK\n");
char dest[1000];
nRet=1;
while(nRet>0)
{
nRet=recv(hsocket,(LPSTR)dest,sizeof(dest),0);
if(nRet>0)
dest[nRet]=0;
else
dest[0]=0;
printf("\nReceived bytes:%d\n",nRet);
printf("Result:\n%s",dest);
}
}
static TCHAR frmdata[] = _T("name=John+Doe&userid=hithere&other=P%26Q");
static TCHAR accept[] = _T("Accept: */*");
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));
std::stringstream ss;
ss<<"http://127.0.0.1/xp_call_asp_by_onega.asp?table_name="<<szTable<<"&record_id="
<<record_id<<"&additional_info="
<<szAdditionalInfo;
LPCTSTR download_file_name = "c:\\xp_call_asp_by_onega.htm";
DeleteFile(download_file_name);
URLDownloadToFile(NULL,ss.str().c_str(),download_file_name,0,NULL);