就是一個(gè)POST的提交,結(jié)構(gòu)搞暈我了。
搞不清楚為什么GET方式?jīng)]效果,而POST有效果,卻提示“Run-Time Check Failure #2 - Stack around the variable 'dest' was corrupted.”
好暈倒啊!!老衲沒辦法了,畢竟對com不熟。記下狀況以后來研究研究。
#include?"Visitor.h"
#include?<stdio.h>
#include?<iostream>
#include?"winsock.h"?
#pragma?comment(lib,"ws2_32.lib")??
#define?winsock_version?0x0101
using??namespace??std;
#include?"URL.h";
Visitor::Visitor(void)
{
}
Visitor::~Visitor(void)
{
}
char?*?Visitor::POST(char?*?host,char*?pathAndQuery,?char?*?parms)
{
????char?*?requestString?=?new?char[4000];
????memset(requestString,0,4000);
????if(strlen(parms)?>?0)
????????strcat(requestString,"POST?");
????else
????????strcat(requestString,"GET?");
????strcat(requestString,pathAndQuery);
????strcat(requestString,"?HTTP/1.1\r\n");
????strcat(requestString,"Host:?");
????strcat(requestString,host);
????
????strcat(requestString,"\r\nAccept:?text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5\r\n");
????strcat(requestString,"Accept-Language:?zh-cn,zh;q=0.5\r\n");
????strcat(requestString,"User-Agent:?Mozilla/4.0?(compatible;?MSIE?8.0;?Windows?NT?5.2;?Trident/4.0;?.NET?CLR?1.1.4322;?.NET?CLR?2.0.50727;?.NET?CLR?3.0.04506.648;\r\n");
????strcat(requestString,"UA-CPU:?x86\r\n");
????strcat(requestString,"Accept-Charset:?gb2312,utf-8;q=0.7,*;q=0.7\r\n");
????//strcat(requestString,"Accept-Encoding:?gzip,?deflate\r\n");
????strcat(requestString,"Connection:?Keep-Alive\r\n");
????
????if(strlen(parms)?>?0){
????????strcat(requestString,"Content-Type:?application/x-www-form-urlencoded\r\n");
????????strcat(requestString,"Content-Length:?");
????????char?*?p?=?new?char[4];
????????itoa(strlen(parms),p,10);???
????????strcat(requestString,p);
????????strcat(requestString,"\r\n\r\n");
????????strcat(requestString,parms);
????}
????//cout?<<?requestString;
????WSADATA?wsadata;
????LPHOSTENT?lphostent;?
????SOCKET?hsocket;
????SOCKADDR_IN?saServer;
????int?nRet;
????if(WSAStartup(winsock_version,&wsadata))
????{
????????
????}
????lphostent?=?gethostbyname(host);
????hsocket?=?socket(AF_INET,?SOCK_STREAM,?IPPROTO_TCP);
????saServer.sin_family?=?AF_INET;
????saServer.sin_port?=?htons(80);
????saServer.sin_addr?=?*((LPIN_ADDR)*lphostent->h_addr_list);
????nRet?=?connect(hsocket,?(LPSOCKADDR)&saServer,?sizeof(SOCKADDR_IN));
????nRet?=?send(hsocket,?requestString,?strlen(requestString),?0);?
????char?dest[1000];
????nRet=1;???
????int?bytes?=?0;
????while(nRet>0)??
????{
????????nRet?=?recv(hsocket,(LPSTR)dest,sizeof(dest),0);
????????if(nRet?>?0)???
????????????dest[nRet]?=?0;???
????????else{
????????????//dest[0]?=?0;??
????????????break;
????????}
????????//printf("\nReceived???bytes:%d\n",nRet);???
????????try{
????????cout?<<?dest;
????????}catch(exception?ex){}
????????bytes?+=?nRet;
????}
????closesocket(hsocket);
????//delete?[]dest;
????printf("\nReceived???bytes:%d\n",bytes);???
????delete?requestString;
????return?"";
}
posted on 2008-11-05 16:55
BirdsHover 閱讀(2879)
評(píng)論(1) 編輯 收藏 引用