[C]HTTP Webrequest

10/14/2014 18:43 supercracker13#1
Hi, ich fange gerade an C zu lernen und versuche mich so langsam an einen Webrequest heranzuarbeiten. Das Problem ist nur, ich finde weder hier einen Thread darüber und google mag mir anscheinend auch nicht helfen.
Es werden nur ganze Codes gezeigt ohne es zu erklären und Copy und Paste möchte ich vermeiden.
Darum wollte ich mal fragen ob einer da eine gute Seite oder ein Tutorial kennt das mir weiter helfen könnte.
(Bei Youtube bekomme ich immer nur Ergebnisse mit C# und das kann ich schon)

Ich hoffe ihr könnt mir helfen ^^
10/14/2014 19:33 Shadow992#2
Quote:
Originally Posted by supercracker13 View Post
Hi, ich fange gerade an C zu lernen und versuche mich so langsam an einen Webrequest heranzuarbeiten. Das Problem ist nur, ich finde weder hier einen Thread darüber und google mag mir anscheinend auch nicht helfen.
Es werden nur ganze Codes gezeigt ohne es zu erklären und Copy und Paste möchte ich vermeiden.
Darum wollte ich mal fragen ob einer da eine gute Seite oder ein Tutorial kennt das mir weiter helfen könnte.
(Bei Youtube bekomme ich immer nur Ergebnisse mit C# und das kann ich schon)

Ich hoffe ihr könnt mir helfen ^^
Ich weiß nicht für welche Platform und was du damit erreichen willst, aber eine Möglichkeit wäre es das HTTP-Request nachzubauen und per TCP-Verbindung zu senden (ist gar nicht so schwer wie es klingt):

[Only registered and activated users can see links. Click Here To Register...]
10/14/2014 19:42 snow#3
wenn du Windows nutzt, kannst du die WinINet Bibliothek benutzen, da gibt es auch von Microsoft viele Tutorials, ansonsten gibt es z.B. noch CURL.
10/14/2014 21:13 Shadow992#4
Quote:
Originally Posted by snow View Post
wenn du Windows nutzt, kannst du die WinINet Bibliothek benutzen, da gibt es auch von Microsoft viele Tutorials, ansonsten gibt es z.B. noch CURL.
Ich habe seine Frage so verstanden, dass er eben keine fertigen Libs verwenden will (ansonsten hätte er ja nicht wirklich von Copy&Paste sprechen können, denn 2 Zeilen aus Beispielen Kopieren und verstehen ist wohl nicht überaus schwer und Copy&Paste ist das auch nur eingeschränkt).

Ansonsten solltest du auf msdn mehr als genug finden inklusive gut dokumentierte Beispiele.
10/14/2014 21:28 supercracker13#5
Quote:
Originally Posted by Shadow992 View Post
Ich habe seine Frage so verstanden, dass er eben keine fertigen Libs verwenden will (ansonsten hätte er ja nicht wirklich von Copy&Paste sprechen können, denn 2 Zeilen aus Beispielen Kopieren und verstehen ist wohl nicht überaus schwer und Copy&Paste ist das auch nur eingeschränkt).

Ansonsten solltest du auf msdn mehr als genug finden inklusive gut dokumentierte Beispiele.
Mit Copy&Paste meinte ich eher die Codes mit 50 Zeilen oder so und dann ohne Erklärung. Als Neueinsteiger finde ich das dann nicht so gut, das man was verwendet ohne zu wissen was es macht.
Bei Libs würde mir das anwenden schon fast reichen.

Aber schon mal danke. Ich gucke mir die WinInet Lib mal an. Und ich hatte vergessen zu schreiben das ich das für Windows gesucht habe.

Ich habe mich jetzt mal ein bisschen umgesehen, aber mit 2 Zeilen finde ich da nichts. Habe gerade hier das gefunden ist aber für c++ [Only registered and activated users can see links. Click Here To Register...]

Kann man das trotzdem verwenden?
10/14/2014 22:31 Schlüsselbein#6
Schau dir wirklich mal libcurl an. Beispiele dazu gibt es sicherlich unzählige und die Dokumentation ist auch in Ordnung.
[Only registered and activated users can see links. Click Here To Register...]
10/15/2014 09:08 ƬheGame#7
libcurl ist das beste dafür wenn du mit C arbeitest ;) Ist anfangs etwas "kompliziert" eigentlich einfach zum verstehen. Gibt auch ca. 5 Millionen Beispiele im Internet dafür.
10/15/2014 16:14 supercracker13#8
Jo am Anfang ist es nicht ganz so leicht ^^
Ich habe jetzt folgenden Code

Code:
#include <stdio.h>
#include </Windows/curl/curl.h>
 
int main(void)
{
  CURL *curl;
  CURLcode res;
 
  /* In windows, this will init the winsock stuff */ 
  curl_global_init(CURL_GLOBAL_ALL);
 
  /* get a curl handle */ 
  curl = curl_easy_init();
  if(curl) {
    /* First set the URL that is about to receive our POST. This URL can
       just as well be a https:// URL if that is what should receive the
       data. */ 
    curl_easy_setopt(curl, CURLOPT_URL, "http://postit.example.com/moo.cgi");
    /* Now specify the POST data */ 
    curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "name=daniel&project=curl");
 
    /* Perform the request, res will get the return code */ 
    res = curl_easy_perform(curl);
    /* Check for errors */ 
    if(res != CURLE_OK)
      fprintf(stderr, "curl_easy_perform() failed: %s\n",
              curl_easy_strerror(res));
 
    /* always cleanup */ 
    curl_easy_cleanup(curl);
  }
  curl_global_cleanup();
  return 0;
}
Allerdings treten immer noch 8 Fehler auf. Ich kenne mich leider nicht genug damit aus um das Problem alleine zu lösen. Habe schon gegoogelt und habe die Vermutung das es an Curl liegt ^^^

10/15/2014 17:24 Delinquenz#9
Du musst natürlich auch die libcurl Bibliothek kompilieren und linken.
10/15/2014 19:21 supercracker13#10
Ok. Davon habe ich auch schon mal was gelesen aber noch nirgends gesehen wie man es macht.
Geht das direkt in visual studio mit einer bestimmten einstellung oder muss man da tricksen?
10/15/2014 19:30 .S0ulSeller#11
Ich benutz Qt Creator ( c++ ) benutze aber auch [Only registered and activated users can see links. Click Here To Register...] mein code ist nach diesem hier aufgebaut...
mein include schaut so aus:
LIBS += C:\Users\Daniel\Desktop\ProjectX\@Inc\curl-7.34.0-devel-mingw32\lib\libcurldll.a

aber du solltest das in visual studio einfügen, wie include paths.. Inwiefern sich deine version nun von meiner bearbeiteten libcurl unterscheidet, kann ich dir nicht sagen, aber hoffentlich hat dir das geholfen
10/15/2014 20:07 supercracker13#12
Aber wo muss ich den Pfad angeben. Habe in C noch nie mit Librarys gearbeitet und würde das jetzt gerne lernen.
Allerdings finde ich keine Erklärung dazu :/
10/16/2014 08:48 ƬheGame#13
Quote:
Originally Posted by supercracker13 View Post
Aber wo muss ich den Pfad angeben. Habe in C noch nie mit Librarys gearbeitet und würde das jetzt gerne lernen.
Allerdings finde ich keine Erklärung dazu :/
Kanns mich mal in skype adden ich zeige dir wie es funktioniert.
Musst mir nur sagen welche IDE du verwendest (sofern du eine verwendest) und welchen compiler.
10/16/2014 10:51 supercracker13#14
Hab das Problem gelöst bekommen. SoulSeller hat mir schon geholfen ^^

Aber danke für das Angebot. Falls ich nochmal was brauche weis ich dann schon mal an wen ich mich wenden kann :D
10/16/2014 11:34 ƬheGame#15
Quote:
Originally Posted by supercracker13 View Post
Hab das Problem gelöst bekommen. SoulSeller hat mir schon geholfen ^^

Aber danke für das Angebot. Falls ich nochmal was brauche weis ich dann schon mal an wen ich mich wenden kann :D
Ich habe so eine Ahnung wer Soul gezeigt hat wie es funktioniert :P Könnte ich gewesen sein das ist aber nur eine Spekulation :D