java如何在http请求中的字符串中获取字符之后的字符串

时间:2016-04-27 09:05:08

标签: java arrays string

我在自己的非apache http服务器上工作,但我终于来到现场,我需要从字符串中获取变量

为此,我创建了一个名为GetArgument的方法(String GetCmd,String arg)

GetCmd = GET命令(例如GET /blockip?ip=192.168.1.99)

arg =您需要了解的参数(例如' ip'并且必须返回上面的ip)

一个GET命令中的额外参数由&

分割

GetArgument方法的当前代码是:

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;
}

但我该怎么做?

2 个答案:

答案 0 :(得分:0)

没关系,我找到了答案:

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;
}

答案 1 :(得分:0)

你不必操纵那么多。您的要求可以通过以下代码来实现

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;
}