2010-12-16 10 views
0

Wer weiß von einer Möglichkeit, dies aus dem Curl Post zu entfernen ...?libcurl POST, entfernen zusätzliche Daten von Curl geworfen

" method="post" name="form_reply" enctype="multipart/form-data"> 

Es wird immer auf der die POST-Zeile der Nachricht geheftet. dh ...

POST /someurl/Topic/comment/replycreate/27537?sp=1**" method="post" name="form_reply" enctype="multipart/form-data">** HTTP/1.1 

Vielen Dank im Voraus ...!

OK, mehr Info ... BTW: Das ist C, PHP NICHT


CURL *curl; 
CURLcode result; 
char errorBuffer[CURL_ERROR_SIZE]; 
int status=FALSE; 
BufHandle *Bufhandle = CreateBufHandle(BUFSIZE); 
memset(&errorBuffer,0x0,sizeof(errorBuffer)); 
curl = curl_easy_init(); 
if(curl) 
{ 
    curl_easy_setopt(curl, CURLOPT_HTTPHEADER, GetPtrToSlist(S)); 
    curl_easy_setopt(curl, CURLOPT_HEADER, 0); 
    curl_easy_setopt(curl, CURLOPT_USERAGENT, GetParameterByName(S, "useragent")); 
    curl_easy_setopt(curl, CURLOPT_COOKIEFILE, GetParameterByName(S, "cookiefile")); 
    curl_easy_setopt(curl, CURLOPT_COOKIEJAR, GetParameterByName(S, "cookiefile")); 
    curl_easy_setopt(curl, CURLOPT_URL, url); 
    curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0); 
    curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, &errorBuffer); 
    curl_easy_setopt(curl, CURLOPT_ENCODING , "gzip"); 
    curl_easy_setopt(curl, CURLOPT_TIMEOUT, 30); 
    curl_easy_setopt(curl, CURLOPT_PROXY, ""); 
    curl_easy_setopt(curl, CURLOPT_POSTFIELDS, data); 
    //curl_easy_setopt(curl, CURLOPT_RETURNTRANSFER, 1); 
    curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1); 
    curl_easy_setopt(curl, CURLOPT_POST, 1); 
    //curl_easy_setopt(curl, CURLOPT_USERPWD, buf); 
    curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writer); 
    curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void*)Bufhandle); 
    result = curl_easy_perform(curl); 
    curl_slist_free_all(GetPtrToSlist(S)); 
    curl_easy_cleanup(curl); 
    if(result == CURLE_OK) 
    { 
    status = TRUE; 
    } 
    else 
    { 
    printf("Error: [%d] - %s\n",result, errorBuffer); 
    status = FALSE; 
    } 
} 
+0

Sie sind offenbar die API falsch verwenden, aber das ist nicht genug Informationen Der entsprechende Code könnte. Hilfe. –

+0

"Sie verwenden offenbar die API falsch, aber das ist nicht genug Information. Der entsprechende Code könnte helfen. - Matthew Flaschen "Bitte zögern Sie nicht mich mit der CORRECT API zu erleuchten – chinasailor

Antwort

0

Locke wird automatisch anhängen: "method =" post "name = "form_reply" enctype =" multipart/form-data ">

jederzeit tun Sie einen Beitrag und die uRL enthält Parameter, oder was es denkt, werden Parameter übergeben werden.

/someurl/Thema/Kommentar/replycreate/27537 * ? sp = 1 *

Wenn Sie also das '?' Fragezeichen, und die Daten nach dem Fragezeichen, Curl hängt nicht mehr seltsam aussehende Post Parameter ...

0

Ich konnte Ihr Problem nicht reproduzieren, URI kommt genau wie bestellt.Ich benutze libcurl 7.22 und die folgender Code, um die Anfrage zu bauen:

BOOST_AUTO_TEST_CASE(case_http_session_libcurl) 
{ 
    test_site::site test_site; 
    std::string url = "http://localhost:"; 
    url += boost::lexical_cast<std::string>(test_site.start()); 
    url += "/post?some=1&data=2"; 
    char error[CURL_ERROR_SIZE]; 

    CURL *curl; 
    int status=FALSE; 
    curl = curl_easy_init(); 
    if(curl) 
    { 
    curl_slist* slist = NULL; 
    slist = curl_slist_append(slist, "Expect:"); 
    slist = curl_slist_append(slist, "Some-Rubbish: here"); 
    curl_easy_setopt(curl, CURLOPT_HTTPHEADER, slist); 
    curl_easy_setopt(curl, CURLOPT_HEADER, 0); 
    curl_easy_setopt(curl, CURLOPT_USERAGENT, "testing goes here"); 
    curl_easy_setopt(curl, CURLOPT_COOKIEFILE, ""); 
    curl_easy_setopt(curl, CURLOPT_COOKIEJAR, ""); 
    curl_easy_setopt(curl, CURLOPT_URL, url.c_str()); 
    curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0); 
    curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, &error[0]); 
    curl_easy_setopt(curl, CURLOPT_ENCODING , "gzip"); 
    curl_easy_setopt(curl, CURLOPT_TIMEOUT, 30); 
    curl_easy_setopt(curl, CURLOPT_PROXY, ""); 
    curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "data=being;posted=1"); 
    curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1); 
    curl_easy_setopt(curl, CURLOPT_POST, 1); 
    curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, curl_on_recv); 
    curl_easy_setopt(curl, CURLOPT_WRITEDATA, 0); 
    CURLcode result = curl_easy_perform(curl); 
    curl_slist_free_all(slist); 
    curl_easy_cleanup(curl); 
    if(result == CURLE_OK) 
    { 
     status = TRUE; 
    } 
    else 
    { 
     printf("Error: [%d] - %s\n",result, error); 
     status = FALSE; 
    } 
    } 
} 

und die Anforderung von HTTP-Server empfangen ist:

POST /post?some=1&data=2 HTTP/1.1 
User-Agent: testing goes here 
Host: localhost:16385 
Accept: */* 
Accept-Encoding: gzip 
Some-Rubbish: here 
Content-Length: 19 
Content-Type: application/x-www-form-urlencoded 

data=being;posted=1