利用WinInet依RFC1867提交表单

原创 2004年07月09日 16:33:00

    CInternetSession m_Session("DigitalTitan");
    CHttpConnection* pServer=NULL;
    CHttpFile* pFile=NULL;
    CString strServerName=m_ServerName;
    INTERNET_PORT nPort=(INTERNET_PORT)atoi(m_ServerPort);
    CString strURL=m_DesignFile;
    try
    { 
 
        pServer=m_Session.GetHttpConnection(strServerName,nPort);
  //AfxMessageBox(strServerName,MB_ICONINFORMATION);
  pFile=pServer->OpenRequest(CHttpConnection::HTTP_VERB_POST,strURL,NULL,1,NULL,NULL,INTERNET_FLAG_EXISTING_CONNECT);
  //AfxMessageBox(strURL,MB_ICONINFORMATION);
  
  CString strBoundary="-----------------------------7d33a816d302b6";//分界线视CGI程序做响应改动.
        pFile->AddRequestHeaders("Content-Type: multipart/form-data, boundary="+strBoundary);
        pFile->AddRequestHeaders("Accept: **");
  
  char* pBuf=new char[1024*10000];
  
  //构造表单开始
  FieldStruct* pFieldStruct=new FieldStruct;
  POSITION CurrentPosition;
  for(int iIndex=0;iIndex<m_FieldData.GetCount();iIndex++)
  {
   CurrentPosition=m_FieldData.FindIndex(iIndex);
   pFieldStruct=(FieldStruct*)m_FieldData.GetAt(CurrentPosition);

   strcat(pBuf,(LPTSTR)(LPCTSTR)strBoundary);

   strcat(pBuf,"Content-Disposition: form-data;name=/"");
   strcat(pBuf,(LPTSTR)(LPCTSTR)pFieldStruct->m_FieldName);
   strcat(pBuf,"/"/r/n/r/n");
   strcat(pBuf,(LPTSTR)(LPCTSTR)pFieldStruct->m_FieldValue);
   strcat(pBuf,"/r/n");
   
   strcat(pBuf,(LPTSTR)(LPCTSTR)strBoundary);
  }
  //构造表单结束
  //  
  CStdioFile m_File;
  BYTE* pFileBuf=new BYTE[1024];
  CString strBuf;
  DWORD dwRead;
  strcat(pBuf,"Content-Disposition: form-data;name=/"FieldName/"/r/nfilename=/"FileName/"/r/n");
  //AfxMessageBox(pBuf,MB_ICONINFORMATION);
  if(m_File.Open(strTempDocPath,CFile::modeRead|CFile::typeBinary))
  {
   do
   {
    dwRead=m_File.Read(pFileBuf,1024);
    for(int kIndex=0;kIndex<(int)dwRead;kIndex++)
    {
     char strChar=*(char*)(pFileBuf+kIndex);
     if(strChar=='/0')
     {
      strBuf.Append("DigitalTitan",12);
     }
     else
     {
      strBuf.AppendChar(strChar);
     }
    }
   }
   while(dwRead>0);
   m_File.Close();
  }  
  //
  DeleteFile(strTempDocPath);
  strcat(pBuf,(LPTSTR)(LPCTSTR)strBuf);
  strcat(pBuf,"/r/n");
  strcat(pBuf,(LPTSTR)(LPCTSTR)strBoundary);
  strcat(pBuf,"--");
  //CString strBufLen;
  //strBufLen.Format("长度:%d",strlen(pBuf));
  //AfxMessageBox(strBufLen,MB_ICONINFORMATION);
  if(pFile->SendRequest(NULL,0,(LPVOID)pBuf,strlen(pBuf))==0)
  {
   AfxMessageBox("网络异常...",MB_ICONINFORMATION);
  }
  else
  {
  }
  pFile->Close();
  pServer->Close();
    }
    catch(CInternetException* e)
 {
  char strErrorBuf[255];
  e->GetErrorMessage(strErrorBuf,255,NULL);
  AfxMessageBox(strErrorBuf,MB_ICONINFORMATION);
 }
    delete pFile;
    delete pServer;
    m_Session.Close();

一个利用WinInet通信的简单客户端Demo

WinInet简介 WinInet是微软提供的对Windows客户端与服务器通信的API,它是一个网络编程接口,包含了HTTP、FTP和Gopher,借助于这些接口,开发者不需要了解底层的一些知识,只...
  • u011645174
  • u011645174
  • 2014年01月20日 14:20
  • 1604

用户登录用表单提交和ajax提交的问题

第一种情况:代码如下:(这种情况下表单提交提交给后台不成功) public/js/jquery.min.js"> var baseurl = "" 登陆界面 *{ margin:0; ...
  • bymyself11
  • bymyself11
  • 2016年08月04日 13:00
  • 4559

Android 使用HttpClient提交表单数据

说明:httpclient有两种方式 1)HttpGet 直接把数据放在url里传输 String url = mUrl + “?name=” + URLEncoder.encode(name...
  • lovoo
  • lovoo
  • 2016年04月30日 17:27
  • 433

js校验表单 后提交表单的三种方法总结

1、 function check(form) { if(form.userId.value=='') { alert("请输...
  • A9925
  • A9925
  • 2015年07月30日 13:12
  • 618

session案例:防止表单重复提交、一次性校验码

session案例1:防止表单重复提交 原理: 1,表单页面由servlet程序生成,servlet为每次产生的表单页面分配一个唯一的随机标识号,并在FORM表单的一个隐藏字段中设置这个标识号,同...
  • A__17
  • A__17
  • 2015年05月29日 17:49
  • 1411

C++通过Wininet库提交POST信息登录到PHPChina中文开发者社区

与上一篇教程文章“c++通过TCP/IP协议提交POST信息登录到PHPChina中文开发者社区”不同的 是这次我们使用Wininet库来提交POST请求并得到HTTP响应消息而非服务器响应消息! ...
  • bjbz_cxy
  • bjbz_cxy
  • 2017年08月26日 15:42
  • 640

JSP通过Servlet提交表单数据并显示

今天试着实现一个小Demo,通过一个注册页面,提交我们所填写的数据,并且显示在一个表格内: 步骤一: 通过分析,需求,我们需要先写好两个JSP: register.jsp...
  • xie_xiansheng
  • xie_xiansheng
  • 2016年03月01日 00:16
  • 4672

Jquery 实现表单验证,所有验证通过方可提交

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 1...
  • gzyx541900780
  • gzyx541900780
  • 2016年09月06日 14:21
  • 2248

使用token防止表单重复提交

本文为转载文章,转自http://www.cnblogs.com/xdp-gacl/p/3859416.html 看了网上说的使用token防止表单重复提交的说明,一句话理解不了,可能我想象力不丰富...
  • NK_TF
  • NK_TF
  • 2016年04月04日 19:48
  • 2288

利用iframe实现提交表单是页面部分刷新

String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServe...
  • henryzhang2009
  • henryzhang2009
  • 2015年04月17日 17:33
  • 1101
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:利用WinInet依RFC1867提交表单
举报原因:
原因补充:

(最多只允许输入30个字)