C++ C++;使用HTTP请求的Twitter REST API的本机使用

C++ C++;使用HTTP请求的Twitter REST API的本机使用,c++,api,ssl,twitter,request,C++,Api,Ssl,Twitter,Request,我一直在尝试访问twitterapi,以便搜索带有特定标签的tweet。因为Twitter API 1.1认证现在需要这样做。 我的应用程序是用C++编写的,我不想使用附加的类库卷。 以下是我一直使用的代码: std::string request="GET /1.1/search/tweets.json?q=%23HelloWorld HTTP/1.1\r\n" "X-HostCommonName: api.twitter.com\r\n" "Authorization: OAuth " "o

我一直在尝试访问twitterapi,以便搜索带有特定标签的tweet。因为Twitter API 1.1认证现在需要这样做。 我的应用程序是用C++编写的,我不想使用附加的类库卷。 以下是我一直使用的代码:

std::string request="GET /1.1/search/tweets.json?q=%23HelloWorld HTTP/1.1\r\n"
"X-HostCommonName: api.twitter.com\r\n"
"Authorization: OAuth "
"oauth_consumer_key=\"XXXXXXXXXXXX\", oauth_signature_method=\"HMAC-SHA1\", oauth_timestamp=\""+imtime.str()+"\", oauth_nonce=\""+imtime.str()+"\", oauth_version=\"1.0\", oauth_token=\"XXXXXXXXXXXXXXXX\", oauth_signature=\"XXXXXXXXXX\"\r\n"
"Host: api.twitter.com\r\n"
"X-Target-URI: https://api.twitter.com\r\n"
"Connection: Close\r\n\r\n";
SOCKET sock=socket(AF_INET,SOCK_STREAM,0);
if (sock==INVALID_SOCKET) {return 0; //ERROR}
SOCKADDR_IN sin;
struct in_addr addr2;
struct hostent *host_adresse = gethostbyname("api.twitter.com");
if ((host_adresse)&&(host_adresse->h_addrtype==AF_INET))
memcpy(&addr2,host_adresse->h_addr,sizeof(struct in_addr));
sin.sin_addr.s_addr=addr2.s_addr;
sin.sin_family=AF_INET;
sin.sin_port=htons(80);
int recsize=(int) sizeof sin;
if (connect(sock,(SOCKADDR*)&sin,recsize)==SOCKET_ERROR) {return 0; //ERROR}
send(sock,request.c_str(),request.length(),0);
但我收到一个错误:需要SSL(代码:92)
我无法找到如何在HTTP请求中使用SSL。我知道这很复杂,而且只使用lib会容易得多,但我希望以某种方式让代码正常工作。

要使用SSL,您需要一些库,如OpenSSL或您的平台自带的任何库。除此之外,您的路径必须以“/”开头。我强烈建议您使用OpenSSL编译的libcurl,进行HTTPS操作非常容易。在windows中,您可以做到这一点:但当然,它不可移植。对于便携设备,@Raistmaj的替代品似乎是一个非常好的主意!谢谢您的回答,我当然会使用libcurl和OpenSSL,这样会更方便!