想不通您为什么不用NMHTTP的POST方式而去调用API?
解决方案 »
- 急问:关于run time error 217
- xml格式化问题
- 由一个线程对象myT创建的多个线程中如何分别设置其优先级?
- 请问ERP项目可否用Delphi开发?真的一定要Java开发吗?
- 请问MessageBox的用法!!
- 请问怎么拦截getprocaddress函数
- 请问如何实现翻页的效果。参与的兄弟都有分可赠!!!!急,请兄弟们帮忙。详情请进~~~~~~~
- 又一个弱智的人,快来抢分!唉!
- 有能象word般显示带图片的控件吗?且能图文信息保存在同一文件之中的那种!
- 老问题:如何根据数据的不同来使dbgrid的行显示为不同的颜色?
- 能用delphi做出类似authorware效果的教学软件吗?
- 怎样读取.MB(字码表)文件?
InternetOpen(...)
InternetConnect(...)
InternetSetStatusCallback(...)
HttpOpenRequest(...)
HttpAddRequestHeaders(...)
HttpSendRequest(...)
HttpQueryInfo(...)
InternetReadFile(...)
我想是不是您在Ce下开发程序或是您自己想做一个上传下载的工具?因为在VC,Delphi中都有控件来简化操作的,我建议还是用MFC的吧,用到CInternetSession,CHttpFile等,简单多了。
象我自己做了一个在我的家乡的BBS刷屏的机器……
这样做:
先定义:
char MyStr[65535]="POST /cgi-bin/xybook/bbs.cgi HTTP/1.1\x0d\x0a"
"Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*\x0d\x0a"
"Referer: 127.0.0.1\x0d\x0a"
"Accept-Language: zh-cn\x0d\x0a"
"Content-Type: application/x-www-form-urlencoded\x0d\x0a"
"Accept-Encoding: gzip, deflate\x0d\x0a"
"User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; Windows 98)\x0d\x0a"
"Host: www.xy.gz.cn\x0d\x0a"
"Content-Length: 255\x0d\x0a"
"Connection: Keep-Alive\x0d\x0a";char strBuffer[9000];
//////////////////////////////////////////然后:AddStr = ("PUT http://202.98.201.244/cgi-bin/xybook/bbs.cgi?menu=addtitle&id=" +
Id + "&username=" + UserName.c_str() + "&userpsd=" + UserPsd.c_str()
+ "&mail=" + Mail.c_str() + "&home=" + Home.c_str() + "&emote=" + Emote.c_str()
+ "&titles=" + TitleEdit->Text.c_str() + "&comment=" + tempStr.c_str() + "\r\n");//cgi程序的提交形式 strcpy(MyStr,AddStr.c_str()); SendMyMessage();//这个函数见下:
bool __fastcall TMainForm::SendMyMessage(void)
{
WSADATA ws;
SOCKET s;
struct sockaddr_in addr;
int iResult;
long lResult;
flag = true;
lResult = WSAStartup(0x0101,&ws);
s = socket(AF_INET,SOCK_STREAM,0);
addr.sin_family = AF_INET;
addr.sin_port = htons(80);
addr.sin_addr.s_addr = inet_addr ("202.98.201.244");
iResult=connect(s,(struct sockaddr *) &addr, sizeof(addr));
if(SOCKET_ERROR == iResult){// 连接失败
WSACleanup();
ShowMessage("连接服务器失败!!!\n请检查网络是否畅通!");
return false;
}else{// 连接成功
iResult = send(s,MyStr,sizeof(MyStr),0);
do
{
strset(strBuffer,' ');
iResult = recv(s,strBuffer,sizeof(strBuffer),0);
if(flag == true){
if(AnsiPos("<META HTTP-EQUIV=Refresh", AnsiString(strBuffer))<=0){
ShowMessage("错误!发送失败!\n请检查你的配置!\n比如密码和用户名等!");
Timer->Enabled = false;
}
flag = false;
}
Application->ProcessMessages();
}
while( iResult !=0 );
}
WSACleanup();
return true;
}当然,这之前你要对你提交的被容先行处理:
AnsiString tempStr = ComMemo->Text; tempStr = StringReplace(tempStr,'\%',"%25",rf);
tempStr = StringReplace(tempStr,'\=',"%3d",rf);
tempStr = StringReplace(tempStr,'\&',"%26",rf);
tempStr = StringReplace(tempStr,'\\',"%5c",rf);
tempStr = StringReplace(tempStr,'\/',"%2f",rf);
tempStr = StringReplace(tempStr,'\?',"?",rf);
tempStr = StringReplace(tempStr,'\r',"%0a",rf);
tempStr = StringReplace(tempStr,'\n',"%0d",rf);
tempStr = StringReplace(tempStr,'\ ',"%20",rf);
tempStr = StringReplace(tempStr,'\<',"%3c",rf);
tempStr = StringReplace(tempStr,'\>',"%3e",rf);
tempStr = StringReplace(tempStr,'\#',"%23",rf);
tempStr = StringReplace(tempStr,'\$',"%24",rf);
等等!
我的EMAIL:[email protected]