我想做一个使用http的put方法。代码如下。#include <windows.h>
#include <wininet.h>#pragma comment(lib,"wininet")
#include<iostream>
using std::cin;
using std::cout;
using std::endl;int main(){
HINTERNET hOpen = NULL;
HINTERNET hCon = NULL;
HINTERNET hRequ= NULL;
WCHAR szAgent[] = L"Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.1.249.1036 Safari/532.5";
CHAR Buffer[1024] = {0};
INTERNET_BUFFERS ibuffer= {0};
DWORD WriteLen = 0;
char sBuffer[4096] = {0};
try
{
hOpen = InternetOpen(szAgent,INTERNET_OPEN_TYPE_DIRECT,NULL,NULL,0);
if (hOpen== NULL)
throw "Error in InternetOpen"; hCon = InternetConnect(hOpen,L"192.168.0.182",INTERNET_DEFAULT_HTTP_PORT,NULL,NULL,INTERNET_SERVICE_HTTP,0,NULL);
if(hCon == NULL) 
throw "Error In InternetConnect";

hRequ = HttpOpenRequest(hCon,L"POST",L"/INDEX.html",NULL,NULL,NULL,INTERNET_FLAG_KEEP_CONNECTION,NULL);
if (hRequ == NULL)
throw "HttpOpenRequest Error"; int Length = 0;
DWORD TimeOut = 60*60;
//这里,每次先取得数据,再发送数据,再接受数据。
// InternetSetOption(hRequ,INTERNET_OPTION_RECEIVE_TIMEOUT,&TimeOut,sizeof(DWORD));
char cLen[256] = {0};
DWORD rLen = 0;
DWORD sLen = 0;
WCHAR wLen[32]={0};
while (1)
{
cout<<"please INPUT what you want: "; cin>>Buffer; ibuffer.dwStructSize = sizeof(ibuffer); Length = ibuffer.dwBufferTotal = strlen(Buffer); _itow(Length,wLen,10); if(HttpAddRequestHeadersW(hRequ,L"Content-Length :32\r\n",-1,HTTP_ADDREQ_FLAG_REPLACE))
throw "HttpAddRequestHeadersW Error"; cout<<"Buffer Total"<<ibuffer.dwBufferTotal<<endl; if(!HttpSendRequestEx(hRequ, &ibuffer, NULL, 0, NULL ))
throw "HttpSendRequestEx Error"; if(!InternetWriteFile(hRequ, Buffer, Length, &WriteLen))
throw "InternetWriteFile Error "; if(!HttpSendRequestEx( hRequ,&ibuffer,NULL,0,NULL))
throw "HttpSendRequestEx Error "; ZeroMemory ( Buffer, sizeof( char ) * 1024 );
ZeroMemory ( &ibuffer, sizeof( INTERNET_BUFFERS ) );
}
}
catch(char *str)
{
cout<<str<<" "<<GetLastError()<<endl;
if (hRequ != NULL)
InternetCloseHandle(hRequ);

if(hCon)
InternetCloseHandle(hCon); if(hOpen)
InternetCloseHandle(hOpen);
} return 0;

}
这里的问题是 ,每次输入不同长度的数据发送到服务器。服务器接受到的Content-Length的长度除第一次正确以外,以后每次发送的数据都是第一次的长度,但是实际发送的数据又正确了的。有没有什么方法在不断开连接的情况下自动修改conten-length的值呢?
我就只有68分了,所以能解决这个问题的,我就全给了。