Receive Only Http Response Body

Jan 30, 2016 at 5:59pm
I have the following code which works perfectly to fetch a url for me:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#include <winsock2.h>
#include <windows.h>
#include <iostream>
#include <string>

//#pragma comment(lib,"ws2_32.lib")

using namespace std;

int main (){
	WSADATA wsaData;

    if (WSAStartup(MAKEWORD(2,2), &wsaData) != 0) {
		cout << "WSAStartup failed.\n";
        system("pause");
		return 1;
    }

	SOCKET Socket=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);

	struct hostent *host;
	host = gethostbyname("abcd.abcd.net");

	SOCKADDR_IN SockAddr;
	SockAddr.sin_port=htons(80);
	SockAddr.sin_family=AF_INET;
	SockAddr.sin_addr.s_addr = *((unsigned long*)host->h_addr);

//	cout << "Connecting...\n";
	if(connect(Socket,(SOCKADDR*)(&SockAddr),sizeof(SockAddr)) != 0){
		cout << "Could not connect";
		system("pause");
		return 1;
	}
//	cout << "Connected.\n";

	string sendbuf = "GET /met.php HTTP/1.1\r\nHost: abcd.abcd.net\r\nConnection: close\r\n\r\n";

	send(Socket,sendbuf.c_str(), sendbuf.length(), 0);
	char buffer[10000];
    string buff;
	int nDataLength = 1;
	while (nDataLength != 0)
	{
	    buffer[0] = 0;
		nDataLength = recv(Socket,buffer,10000,0);
		buff.append (buffer, nDataLength);
		//cout << buffer;
	}

	closesocket(Socket);
        WSACleanup();

    cout << buff;
	system("pause");
	return 0;
}




The Problem is that it returns this too

1
2
3
4
5
6
7
HTTP/1.1 200 OK
Date: Sat, 30 Jan 2016 17:58:26 GMT
Server: Apache
X-Powered-By: PHP/5.2.17
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html



and i don't know why prints a "0" at end.

I just want to store RAW data only body of response and wanna get rid of that ending 0.

Thanks for any help
Last edited on Jan 30, 2016 at 5:59pm
Topic archived. No new replies allowed.