Wie kann ich diese Zeichenfolge analysieren GET /STA/ID=HelloWorld/Pass=Testin123 HTTP/1.1
Zuerst muss ich nach STA
überprüfen, wenn es vorhanden ist, weiterhin die Zeichenfolge scannen. Legen Sie Wert von ID
in diesem Fall HelloWorld
sollte Testin123
Speicher in char-Datentyp SSID
und Wert von Pass
, in diesem Fall sein sollte, Speicher in Datentyp char Pass
HTTP-String analysieren
Es soll zuerst das Vorhandensein von STA
in String bestätigen. Wenn es nicht vorhanden ist, treten Sie nicht in Schleife ein. Wenn es beendet wird, suchen Sie nach ID
und Pass
. Speichern Sie es.
Jetzt ist das Problem, ich bin nicht in der Lage, Wert ID
und pass
zu speichern. Es kann auch nicht nach STA
gesucht werden.
char GetString[] = "GET /STA/ID=Test/Pass=123 HTTP/1.1";
char *get = strtok(GetString, " ");
char *request = strtok(NULL, " ");
char *rtype = strtok(NULL, " ");
char *FirstPart;
int main()
{
if (request != NULL)
{
FirstPart = strtok(request,"/");
while(FirstPart)
{
if (!strncmp(part, "STA"))
{
//Print STA Found
if(!strncmp(part, "ID=", 3))
{
//Store value of ID
}
if(!strncmp(part, "Pass=", 5))
{
//Store the Pass
}
}
}
FirstPart =strtok(NULL,'/');
}
}
Das ist ein seltsamer Ort zu stoppen, haben Sie die Tokenizing richtig, aber nicht für String Gleichheit mit Strcmp getestet? – covener
@covener Ich habe den vollständigen Code hinzugefügt. –
Das Problem ist, dass die kleinen Fehler Ihren Hauptfehler verbergen. Es gibt einen ungültigen Aufruf von strncmp ohne Längenangabe. Es gibt einen ungültigen Aufruf von strtok mit einem zweiten Zeichen des Zeichens, das eine Zeichenkette sein sollte. Ihre while-Schleife durchläuft die Token, tut aber nur etwas, wenn dieses Token "STA" ist, aber wenn es das ist, prüft es, ob es etwas anderes ist, aber Sie wissen, dass es "STA" ist, so dass die anderen if-Klauseln niemals übereinstimmen können . – MAP