0
我一直在试图HTTP POST请求发送给Facebook没有成功我从服务器得到这样的响应:处理HTTP POST请求/响应
HTTP/1.1 400错误的请求的Content-Type:text/html的; charset = utf-8日期: Sat,10 Dec 2016 21:28:17 GMT连接:关闭内容长度:2959
Facebook |错误
抱歉,发生了错误,我们正在努力就可以了,我们会得到它,一旦固定 我们可以
我的代码
#include <iostream>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdlib.h>
#include <unistd.h>
#include <netdb.h>
#include <fstream>
using namespace std;
int main()
{
int s, error;
struct sockaddr_in addr;
s = socket(AF_INET, SOCK_STREAM, 0);
if(s <0)
{
cout<<"Error 01: creating socket failed!\n";
close(s);
return 1;
}
addr.sin_family = AF_INET;
addr.sin_port = htons(80);
inet_aton("31.13.90.36",&addr.sin_addr);
error = connect(s,(sockaddr*)&addr,sizeof(addr));
if(error!=0)
{
cout<<"Error 02: conecting to server failed!\n";
close(s);
return 1;
}
const int msgSize = 1042;
char msg[] = "POST /login.php?login_attempt=1 \r\n"
"HTTP/1.1\r\n"
"HOST: facebook.com\r\n\r\n"
"Content-type: application/x-www-form-urlencoded\r\n"
"Content-Length: 41\r\n"
"[email protected]&pass=test123&submit=1\r\n" ;
char answ[1042];
//cin.getline(&msg[0],256);
send(s,msg,strlen(msg),0);
ssize_t len;
while((len = recv(s, msg, strlen(msg), 0)) > 0)
{
cout.write(msg, len);
std::cout << std::flush;
}
if(len < 0)
{
cout << "error";
}
close(s);
}
我做错了什么?
我没有想到我使用Live HTTP头部应用程序的方式,当我测试新的代码我得到HTTP/1.1 301永久移动 我认为这意味着链接改变我怎么能跟随链接?谢谢你的时间。 – Dota
@AmineDjenaihi:是的,这意味着按照位置标题中给出的链接。 RFC涵盖了这一点。我不知道你使用Live HTTP头看到了什么,但是你有几个换行符错误:你添加了三个不属于那里并删除了它所属的位置。除此之外,浏览器还添加了更多标题,所以我敢肯定你没有复制浏览器的原始请求,而是从你在那里看到的东西中猜出来的。 –
@AmineDjenaihi:再次请[请阅读HTTP规范](https://tools.ietf.org/html/rfc2616)。 301是重定向响应。它包含新网址的“位置”标头。将相同的请求重复到新的URL。 –