使用C ++将POST请求发送到Apache Webserver

时间:2017-12-01 14:45:01

标签: php c++ apache

我正在尝试将一些数据从c ++应用程序发送到同一台机器上的apache服务器。 我写了一些c ++代码来向apache服务器发送POST请求。 index.php页面上的PHP脚本应该收集数据并将它们输出到网页上。

我的C ++代码:

      void send_post()
       {
        portno = 80;
        sockfd = socket(AF_INET, SOCK_STREAM, 0);
        if (sockfd < 0)
        {
            cout << "ERROR opening socket" << endl;
        }
        else {cout << "Socket opened -> ";}

        server = gethostbyname("localhost");
        if (server == NULL)
        {
            cout << "ERROR, no such host" << endl;
            exit(0);
        }
        bzero((char *) &serv_addr, sizeof(serv_addr));
        serv_addr.sin_family = AF_INET;
        bcopy((char *)server->h_addr, (char*)&serv_addr.sin_addr.s_addr,server->h_length);
        serv_addr.sin_port = htons(portno);

        if (connect(sockfd,(struct sockaddr *) &serv_addr,sizeof(serv_addr)) < 0)
        {
        cout << "ERROR connecting" << endl;
        }
        else {cout << "Connected -> ";}
        bzero(upcbuffer,512);
        sprintf(upcbuffer, "%s", post_req.c_str());
        z = write(sockfd,upcbuffer,strlen(upcbuffer));
        if (z < 0)
        {
        cout << "ERROR writing to socket";
        }
        else {cout << "Wrote successfully to socket" << endl;}
        close(sockfd);
        cout << "Socket closed now" << endl;
        }

使用我的post_req字符串:

post_req = "POST /index.php HTTP/1.1\r\nHost: localhost\r\nContent-Type: application/x-www-form-urlencoded\r\nContent-Length: 8\r\n\r\ntesttest\r\n";

我在index.php上的PHP代码

<?php
print_r($_POST);
?>

可悲的是,我在索引页面上看不到任何内容。 我确定POST请求格式正确。 你能帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

您希望在哪里看到什么?要从Web服务器获取回复,您应该尝试从套接字读取而不是在发送/写入后立即关闭它。

我还建议你对网络programmin更有信心。 在这里你会得到一个常青树:

http://beej.us/guide/bgnet/output/html/multipage/index.html