libcurl POST-Problem

badday

Erfahrenes Mitglied
Moin zusammen,

ich schreibe gerade an einem Programm und benutze dort libcurl. Ich sende an einen Server Daten, der mir dann antwortet. Diese Antwort überprüfe ich. Soweit so gut. Es funktioniert auch, allerdings dauert jeder request etwa 1 min. OK, der typische http-timeout, aber: Das ganze funktioniert tatsächlich, d. h. am Server kommt alles an, er antwortet, dies wird ausgewertet und am Ende steht der der return code CURLE_OK.

Dies finde ich etwas merkwürdig. Der Server antwortet sofort (kann ich via Wireshark sehen), die Serverantwort wird mit meiner eigenen Funktion auch überprüft (ohne Verzögerung), danach aber passiert offenbar nichts für ca. 1 min.

Hier der relevante Code:
C++:
	curl = curl_easy_init();
	if(curl) {
		CURLcode res;

		struct curl_slist *headers=NULL;
		headers = curl_slist_append(headers, "Accept: application/json");	
		curl_slist_append( headers, "Content-Type: application/json" );
		curl_slist_append( headers, "charsets: utf-8" );
		curl_easy_setopt(curl, CURLOPT_URL, targetaddress.c_str());
		curl_easy_setopt(curl, CURLOPT_PORT, 1234);			
		curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);        
		curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, sizeof(char)*(utf8string.length()));
		curl_easy_setopt(curl, CURLOPT_POSTFIELDS, utf8string.data());
		curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, checkServerAnswer); 
		
		
		/* Perform the request, res will get the return code */ 
		res = curl_easy_perform(curl);

 
		/* always cleanup */ 
		curl_easy_cleanup(curl);
		curl_slist_free_all(headers);
}

Die Überprüfungsfunktion ist trivial (checkServerAnswer), darin hängt er auch nicht, daher verzichte ich vorerst auf das Posten.

Ich hoffe, jemand weiß Rat :)


Vielen Dank,

badday
 
Exakt das war das Problem. Es fehlte die content-lenght. Vielen, vielen Dank, da wäre ich nie draufgekommen :)

Gruß,

badday
 
Zurück