UITextField使用注意

今天遇到一奇葩问题:
在UITextField中输入帐号:189123456 密码:123456
使用GET请求时拼接出来的URL为nil,导致无法访问服务器

原因:在UITextField中输入的数字可能是中文字符
解决办法:拼接URL时将字符串 UTF-8转码
大致代码如下:

//把传进来的URL字符串转变为URL地址
    + (NSURLRequest *)request_URL:(NSString *)urlStr RequestParams:(NSDictionary *)params Method:(NSString *)method
{
    //把传进来的URL字符串转变为URL地址
    NSURL *requestUrl;
    
    //解析请求参数,用NSDictionary来存参数,通过自定义的函数parseParams把它解析成一个post格式的字符串
    NSString *parseParamsResult = [self buildParams:params];
    
    NSString *newUrlStr = [NSString stringWithFormat:@"%@?%@", urlStr, parseParamsResult];
    
    if ([method isEqualToString:@"GET"])
    {
        requestUrl = [NSURL URLWithString:[newUrlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
    }else
    {
        requestUrl = [NSURL URLWithString:[urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
    }
    
    //请求初始化,可以在这针对缓存,超时做出一些设置
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:requestUrl];
    
    //设置请求方式post或者get
    [request setHTTPMethod:method];
    
    // 如果是post请求,设置其请求体
    if ([method isEqualToString:@"POST"])
    {
        NSData *postData = [parseParamsResult dataUsingEncoding:NSUTF8StringEncoding];
        [request setHTTPBody:postData];
    }
    
    return request;
}

你可能感兴趣的:(UITextField使用注意)