String index out of range: -1怎么处理啊
楼歪 2014-07-15 04:31:47 public void parseRequestInfo(){
if(null==requestInfo||(requestInfo=requestInfo.trim()).equals("")){
return ;
}
/*
* 从信息的首行分解出:请求方法,路径,参数)(get可能存在)
* eg:GET /index.html?uname=123&pwd=123 HTTP/1.1
* 如果为post,请求参数可能在正文最后
*
*/
String paramString="";//接收请求参数
//1.获取请求方式
String firstLine=requestInfo.substring(0,requestInfo.indexOf(CRLF));//**********************************报错行
int idx=requestInfo.indexOf("/");
this.method=firstLine.substring(0,idx).trim();
String urlStr=firstLine.substring(idx,firstLine.indexOf("HTTP/")).trim();
if(this.method.equalsIgnoreCase("post")){
this.url=urlStr;
paramString=requestInfo.substring(requestInfo.lastIndexOf(CRLF)).trim();
}else if(this.method.equalsIgnoreCase("get")){
if(urlStr.contains("?")){
String[] urlArray=urlStr.split("\\?");
this.url=urlArray[0];
paramString=urlArray[1];//接收请求参数
}else{
this.url=urlStr;
}
}
//不存在请求参数
if(paramString.equals("")){
return;
}
//2.将请求参数封装到map中
parseParames(paramString);
}
public void parseParames(String parseString){
//分割,将请求字符串转成数组
StringTokenizer token=new StringTokenizer(parseString,"&");
while(token.hasMoreTokens()){
String keyValue=token.nextToken();//循环Returns the next token from this string tokenizer.
String[] keyValues=keyValue.split("=");
if(keyValues.length==1){//
keyValues=Arrays.copyOf(keyValues, 2);
keyValues[1]=null;//代表空,赋值给“=”后面部分
}
String key=keyValues[0].trim();
String value=(null==keyValues[1]?null:decode(keyValues[1].trim(),"gbk"));
//转换成map,分拣
if(!parameterMapValue.containsKey(key)){
parameterMapValue.put( key, new ArrayList<String>());
}
List<String > values=parameterMapValue.get(key);
values.add(value);
}
}
报错的行我用“***************”标出来了,不知道怎么改,求救!