2016-04-27 6 views
0

Ich arbeite an meinem eigenen Nicht-HTTP-Server Apache, aber ich komme schließlich zu der Stelle war ich brauche Variablen zu bekommen aus einem Stringjava Wie in einer HTTP-Anforderung Zeichen nach Zeichen in einer Zeichenfolge erhalten

zu tun, dass ich eine Methode erstellt namens GetArgument (String GetCmd, String arg)

GetCmd = die GET-Befehl (zB GET /blockip?ip=192.168.1.99)

arg = das Argument, dass Sie Informationen brauchen über (zum Beispiel 'IP' und das muss die IP oben zurückgeben)

zusätzliche Argumente in einem Befehl GET sind gespaltet von &

Der aktuelle Code für die GetArgument Methode ist:

private static String GetArgument(String GetCmd, String arg) { 
    String args[] = GetCmd.split("?")[1].split("&"); 
    for(int i = 0; i < args.length; i++){ 
     if (args[i].startsWith(arg + "=")){ 
      // Argument found 
     } 
    } 
    return null; 
} 

Aber wie kann ich das tun?

+0

Ich würde zu diesem Zweck eine HashMap verwenden. Sie können es einmal erstellen, wenn Sie die URL der Anfrage verarbeiten, und dann verwenden, um Parameter von Ihrer Anwendung nach Bedarf abzufragen. Beachten Sie auch, dass Ihre URLs möglicherweise codierte Zeichen enthalten. Zum Beispiel wird ein Leerzeichen zu "% 20". Sie müssen diese richtig entschlüsseln. – Bartvbl

Antwort

0

vergiss fand ich die Antwort:

private static String GetArgument(String GetCmd, String arg) { 
    String args[] = GetCmd.split("\\?")[1].split("&"); 
    for(int i = 0; i < args.length; i++){ 
     if (args[i].startsWith(arg + "=")){ 
      String returnstring = args[i].substring(arg.length() + 1, args[i].length()); 
      return returnstring; 
     } 
    } 
    return null; 
} 
0

Sie nicht so viel manipulieren müssen. Ihre Anforderung kann durch folgenden Code erfüllt werden:

public static void main(String[] args) { 

    System.out.println("333 "+GetArgument("/blockip?ip=192.168.1.99&abc=xyz", "ip")); 
} 
public static String GetArgument(String GetCmd, String arg) { 
    String tmp = GetCmd.substring(GetCmd.indexOf('?')+1); 
    if(tmp.contains(arg)){ 
     return tmp.substring(tmp.indexOf(arg) + arg.length() + 1,(tmp.substring(tmp.indexOf(arg)+arg.length()+1).indexOf('&')>0)?tmp.lastIndexOf('&'):tmp.length()); 
    } 
    return null; 
} 
+0

danke für die tolle Antwort, aber ich fand eine einfachere Möglichkeit, dies zu tun (siehe meine Antwort) –

+0

cool .. großartig zu hören, dass .. –

Verwandte Themen