2016-01-05 2 views
1


В моем проекте мне нужно отправить электронное письмо клиенту, но я столкнулся с недопустимыми параметрами утверждения. Я проверил все решения, но это не работает.Ошибка утверждения с параметрами URL

-(void)EmailWebservice 
{ 
    [MBProgressHUD showHUDAddedTo:self.view animated:YES]; 

    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; 
    AFJSONRequestSerializer *serializer = [AFJSONRequestSerializer serializer]; 
    [serializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; 
    [serializer setValue:@"application/json" forHTTPHeaderField:@"Accept"]; 
    manager.requestSerializer = serializer; 

    NSString *getPostLink = [NSString stringWithFormat:@"http://Dummy.com/sendmail/?business_email=%@&_name=%@",TextEmail.text,[[NSUserDefaults standardUserDefaults]valueForKey:@"USERNAME"]]; 

    NSString *encoded = [getPostLink stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 

    NSLog(@"Encoding value is %@",encoded); 

    [manager GET:getPostLink parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) { 

     NSLog(@"JSON: %@", responseObject); 
     [MBProgressHUD hideHUDForView:self.view animated:YES]; 

}failure:^(AFHTTPRequestOperation *operation, NSError *error) { 

     NSLog(@"the failure is %@", error); 
     [MBProgressHUD hideHUDForView:self.view animated:YES]; 

    }]; 
} 

Ошибка:

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Invalid parameter not satisfying: URLString'

+0

Предполагается, что '' '' '' '' '' '' '' '' '' поступает сразу после последнего '/' 'пути'? – vadian

+0

Попробуйте URL-кодирование ваших параметров. Вероятно, в вашем URL-адресе есть пробелы или другие URL-адреса, отличные от URL, потому что вы прямо подставляете туда адрес электронной почты и имя клиента. См. Http://stackoverflow.com/questions/718429/creating-url-query-parameters-from-nsdictionary-objects-in-objectivec для того, чтобы сделать это более элегантно. –

+0

Да @vadian – Arun

ответ

0

ошибка говорит вам, что есть что-то не так с вашим URL. Я хотел бы начать с распечатки URL, как вы делаете с линией:

NSLog(@"Encoding value is %@",encoded); 

Вы можете вставить это в браузере вашего выбора и посмотреть, если при загрузке страницы?

Вы можете изо всех сил кодирования значения параметров в вашем URL:

business_email 
fave_customer_name 

закодировать параметры:

-(void)EmailWebservice 
{ 
    [MBProgressHUD showHUDAddedTo:self.view animated:YES]; 

    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; 
    AFJSONRequestSerializer *serializer = [AFJSONRequestSerializer serializer]; 
    [serializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; 
    [serializer setValue:@"application/json" forHTTPHeaderField:@"Accept"]; 
    manager.requestSerializer = serializer; 

    NSString *email = [TextEmail.text stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 
    NSString customer = [[NSUserDefaults standardUserDefaults]valueForKey:@"USERNAME"] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 

    NSString *getPostLink = [NSString stringWithFormat:@"http://Dummy.com/csrestapi/sendintroemail/?business_email=%@&fave_customer_name=%@",email,customer]; 

    NSString *encoded = [getPostLink stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 

    NSLog(@"Encoding value is %@",encoded); 

    [manager GET:getPostLink parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) { 

     NSLog(@"JSON: %@", responseObject); 
     [MBProgressHUD hideHUDForView:self.view animated:YES]; 

    }failure:^(AFHTTPRequestOperation *operation, NSError *error) { 

     NSLog(@"the failure is %@", error); 
     [MBProgressHUD hideHUDForView:self.view animated:YES]; 

    }]; 
} 

Вы должны прочитать эту stackoverflow question, поскольку он охватывает этот тип вопроса.

Смежные вопросы