TCHAR szAppName[24];
GetWindowText(szAppName,24);
HINTERNET hInternet=InternetOpen(szAppName,INTERNET_OPEN_TYPE_PRECONFIG,NULL,NULL,0);
if(!hInternet)
{
MessageBox(_T("Internet handle open failed!"));
return;
} HINTERNET hConnect=InternetConnect(hInternet,_T("192.168.0.23"),8085,NULL,NULL,INTERNET_SERVICE_HTTP,0,0); if(!hConnect)
{
MessageBox(_T("Internet handle connect failed!"));
InternetCloseHandle(hInternet);
return;
}
LPCWSTR pAccept=_T("text/*"); const TCHAR *pBf[2];
pBf[0]=pAccept;
pBf[1]=NULL;
HINTERNET hRequest=::HttpOpenRequest(hConnect,_T("GET"),NULL,_T("HTTP/1.1"),0,pBf,0,0); if(!hRequest)
{
MessageBox(_T("Internet handle request failed!"));
InternetCloseHandle(hConnect);
InternetCloseHandle(hInternet);
return;
}
TCHAR szRequest[]=_T("CMDID=CGETDEVTYPE&TIMESTAMP=2009-5-8 14:52:01"); UINT ln=wcslen(szRequest);
BOOL b=::HttpSendRequest(hRequest,0,0,szRequest,ln);
DWORD err=GetLastError();
DWORD dwLen,len=4;
b=::HttpQueryInfo(hRequest,HTTP_QUERY_CONTENT_LENGTH|HTTP_QUERY_FLAG_NUMBER,(LPVOID)(&dwLen),&len,0);
err=GetLastError();
char bf[10*1024]={0};
DWORD rd;
InternetReadFile(hRequest,bf,sizeof(bf),&rd); SetDlgItemTextA(this->GetSafeHwnd(),IDC_RICHEDIT21,bf); InternetCloseHandle(hRequest);
InternetCloseHandle(hConnect);
InternetCloseHandle(hInternet);发送的完成链接是http://192.168.0.23:8085/?CMDID=CGETDEVTYPE&TIMESTAMP=2009-5-8 14:52:01
但实际服务器收到的是http://192.168.0.23:8085/后面的内容没有了,真是奇怪,郁闷了好多天,查了好多资料,网上的人似乎都没遇到过这样的问题的。
解决方案 »
- 页面怎么判断控件控件已经安装
- 文档视图结构 CHtmlView 打不开网页的问题
- 从一条正弦曲线(y = A *sin(w*t))上得到一些点,现在想检测是否有误差,想推出振幅A来,应该怎么做啊?
- pomelowu(羽战士)大哥你的demo我已经受到了 请进来拿分。我只能发100的分2次给你了
- 简单介绍一下DataGrid 和Microsoft ADO Data Control这两控件怎么操纵数据库的?
- ***如何让ListCtrl某一行处于选择状态(反显示)****
- 修改文件中的一条记录怎么作
- 问一简单问题:WSAConnect()函数的参数数据内容形式?
- 在win2k 中用ExitWindowsEx关机时,返回一个错误吗1314 ,如果把参数该成注销却成功。
- 如何保存vc中字体的样式
- OnSize里如何处理滚动条的位置,以及如何滚动界面
- Scoket通信的简单问题!
过去我们还有 https 不成功的时候
hConnect,_T("GET"),NULL Get 有大小限制
用 post
我的那个是 微软的 提供的, 后面的一个 帖子 有2段代码
因为数据是发送出去的,只是少了内容部分,所以HttpSendReuqest是成功的,唯独不能解释为何lpOptional这个参数没有被发送出去。
<%
'Increase Script Timeout to 10 hours
Server.ScriptTimeout = 36000 'Get size of POST data
PostSize = Request.TotalBytes 'Read POST data in 1K chunks
BytesRead = 0
For i = 1 to (PostSize/1024)
ReadSize=1024
PostData = Request.BinaryRead(ReadSize)
BytesRead = BytesRead + ReadSize
Next
'Read remaining fraction of 1K
ReadSize=TotalBytes - BytesRead
If ReadSize <> 0 Then
PostData = Request.BinaryRead(ReadSize)
BytesRead = BytesRead + ReadSize
End If ' Send results back to client
Response.Write BytesRead
Response.Write " bytes were read."
%>
在此共享一下:对于我的那句请求,http://192.168.0.23:8085/?CMDID=CGETDEVTYPE&TIMESTAMP=2009-5-8 14:52:01
如果这样发送的话 HttpSendRequest(hRequest,NULL,0,_T("CMDID=CGETDEVTYPE&TIMESTAMP=2009-5-8 14:52:01 "),dwLen)
其结果是
GET / HTTP/1.1
Accept: text/*
User-Agent: Http2
Host: 192.168.0.23:8085
Content-Length: 92CMDID=CGETDEVTYPE&TIMESTAMP=2009-5-8 14:52:01 (这里可能为乱码)所以HttpSendReuqest的lpOptional参数为内容部分,但是并不是指CMDID=CGETDEVTYPE&TIMESTAMP=2009-5-8 14:52:01
服务器需要的请求是这样的
GET /CMDID=CGETDEVTYPE&TIMESTAMP=2009-5-8%2014:52:01 HTTP/1.1
Accept: text/*
User-Agent: Http2
Host: 192.168.0.23:8085
Content-Length: 92所以/CMDID=CGETDEVTYPE&TIMESTAMP=2009-5-8%2014:52:01 应该当做需要查找的文档,在HttpOpenRequest的时候加入。