| 这个周末的雨似乎不太想停,到了北京半年了,还是第一次打伞出门。呵呵。想做一个http post试验但是没有成功,不知道cookie该如何放。请路过的大侠们指点指点吧。 #include #include #include #include #include #include #include #include #include #include #include #include #include #define SA struct sockaddr #define MAXLINE 4096 #define MAXSUB 200 #define LISTENQ 1024
extern int h_errno; ssize_t process_http(int sockfd, char *host, char *page, char *poststr) { char sendline[MAXLINE + 1], recvline[MAXLINE + 1]; ssize_t n; snprintf(sendline, MAXSUB, "POST %s HTTP/1.0\r\n" "Host: %s\r\n" "Content-type: application/x-www-form-urlencoded\r\n" "Content-length: %d\r\n\r\n" "%s" "Cookie: ID=8253F1EBDD26864C4D06D5CF57645076; ID=bWFsaW5nADAwNwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAANGgAATqrfQitCnEIFAAAAAAACAbjWcTByRGiP;", ", page, host, strlen(poststr), poststr); write(sockfd, sendline, strlen(sendline)); while ((n = read(sockfd, recvline, MAXLINE)) > 0) { recvline[n] = ''; printf("%s", recvline); } return n; } int main(void) { int sockfd; struct sockaddr_in servaddr; char **pptr; //********** You can change. Puy any values here ******* char *hname = "somewebsite.com"; char *page = "/q"; // char *poststr = "ct=23&cm=7003&&&Submit=login\r\n"; char *poststr = "word=ddsafdsafdsafsdaf&ct=17&cm=1&rn=10&lm=394496\r\n"; //******************************************************* char str[50]; struct hostent *hptr; if ((hptr = gethostbyname(hname)) == NULL) { fprintf(stderr, " gethostbyname error for host: %s: %s", hname, hstrerror(h_errno)); exit(1); } printf("hostname: %s\n", hptr->h_name); if (hptr->h_addrtype == AF_INET && (pptr = hptr->h_addr_list) != NULL) { printf("address: %s\n", inet_ntop(hptr->h_addrtype, *pptr, str, sizeof(str))); } else { fprintf(stderr, "Error call inet_ntop \n"); } sockfd = socket(AF_INET, SOCK_STREAM, 0); bzero(&servaddr, sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_port = htons(8900); inet_pton(AF_INET, str, &servaddr.sin_addr); connect(sockfd, (SA *) & servaddr, sizeof(servaddr)); process_http(sockfd, hname, page, poststr); close(sockfd); exit(0); }
|