2010-11-21 19 views
1

J'ai un plugin que j'utilise depuis un certain temps, et il utilise simplement des Sockets pour envoyer une requête. Le problème est que, lorsque vous utilisez le plugin sur un serveur de jeu, vous devez d'abord vous connecter à SteamCommunity.com sur la machine pour stocker le cookie. Je veux le convertir en C++ pour alléger cette étape en me connectant d'abord au site avec HTTPS. Cela fait longtemps que je n'ai plus utilisé LibCurl et je n'ai pas trop de chance de trouver l'information dont j'ai besoin pour la mettre en place. Fondamentalement, je me demande simplement si je vais à ce sujet la bonne façon, et quels autres paramètres CURLOPT_ je dois utiliser.C++ LibCurl pour envoyer une requête HTTPS

void InviteToGroup(const char *pszAuthID) 
{ 
    CURL *curl; 
    CURLcode res; 

    const char *szCommunityID = GetCommunityID(pszAuthID); // User's Steam Community ID 
    const char *szCookie = "76561198018111441%7C%7CC7D70E74A3F592F3E130CCF4CAACD4A7B9CAD993"; // Steam Community Login Cookie 
    const char *szInviter = "76561194018311441"; // Inviter's Steam Community ID 
    const char *szGroup = "103583791430784257"; // Group Steam Community ID 

    const char *request = new char[2048]; 
    snprintf(request, 2047, "GET /actions/GroupInvite?type=groupInvite&inviter=%s&invitee=%s&group=%s HTTP/1.1\r\nHost: steamcommunity.com\r\nConnection: close\r\nCookie: steamLogin=%s\r\n\r\n", szInviter, szCommunityID, szGroup, szCookie); 

    curl = curl_easy_init(); 
    if(curl) 
    { 
     curl_easy_setopt(curl, CURLOPT_URL, "https://www.steamcommunity.com"); 
     curl_easy_setopt(curl, CURLOPT_USERPWD, "myusername:mypass"); 

     // Attempt to Connect the Steam Community Server 
     res = curl_easy_perform(curl); 

     // Close the connection 
     curl_easy_cleanup(curl); 
    } 
} 

Répondre

0

Vous semblez envoyer un en-tête utilisateur et vous voulez probablement CURLOPT_HTTPHEADER. Vous devriez utiliser la feuille de curl pour créer ceci.

Si vous voulez écrire en C++ au lieu de C, vous devriez apprendre à utiliser les chaînes correctement. Comme c'est le cas, vous ne pouvez pas écrire dans un const char *, mais l'utilisation de new avec une taille de buffer «espérons que c'est assez grand» n'est pas la façon dont vous construisez des chaînes en C++. Vous voudrez probablement utiliser std :: ostringstream pour créer une chaîne comme celle-ci.