我用VC编写了一个基于Http协议的C/S程序.接收和发送程序都在我自己机器上.
在发送程序中我先建立了如下变量:
CInternetSession session; 
CHttpConnection* pConnection = NULL;
CHttpFile* pFile = NULL;然后用pConnection = session.GetHttpConnection("127.0.0.1",nport); 获得链接
用pFile = pConnection->OpenRequest(CHttpConnection::HTTP_VERB_POST, "",NULL,1,NULL,"HTTP/1.1",INTERNET_FLAG_KEEP_CONNECTION);获得收发文件,
用以下语句发送数据,
pFile->SendRequest(csHeaders, (LPVOID)(LPCTSTR)szFormData, strlen(szFormData)); 
pFile->Flush();用pFile->ReadString(line)获取数据,最后把三个变量分别关掉:
pFile->Close();
pConnection->Close();
session.Close();现在遇到问题是这样的:当我不退出应用程序,则第一次总能向接收程序发送成功,但以后就怎么也发不成功,我用pFile->QueryInfoStatusCode(dwRet)获得返回的状态都为403;
如果每次发送之前都重启应用程序就都成功,请问这是怎么回事.但我的应用程序启动之后是不可以关的,所以问题比较麻烦,请各位大侠帮忙.

解决方案 »

  1.   

    403// the reason is that the Server is too busy to process request.
    The server understood the request, but is refusing to fulfill it.
    检查你的Http服务器,是否处理连接的容量有限,还有处理的效率等。
      

  2.   

    右键点击"我的电脑",选择"管理",然后"服务和应用程序"->"Internet信息服务"
    右键点"默认Web站点","属性"
    对话框的" 性能"、"Web站点"等页中查看
      

  3.   

    你下载http://www.codeproject.com/internet/httpget-post.asp?msg=294637
    这个例子,我一般用它来调试和http server之间的通讯,可以很清楚的得到返回值。
      

  4.   

    你的http server是什么?调试这种问题最好服务器端和客户端都找找问题
      

  5.   

    http server是另一个公司编写的应用程序,那东西我没源代码,看来只得请http server的设计者来看看了
      

  6.   

    一个进程中调用WININET函数同时只能有两个连接,第三个连接将挂起.
      

  7.   

    基于HTTP协议的应该是短链接,我发起请求,服务器响应后应该断开了,何以一直连着,真是莫名其妙.
      

  8.   

    用这种方式一直没解决掉问题,后来改变了连接技术,用socket方式去发送接收HTTP请求,总算把问题解决掉了,看来还是微软提供的这些CHttpConnection等东西有问题.他们把具体的实现封装起来,也不知道它们怎么做的.