2016-03-09 4 views
-2

Я пробовал все возможные методы отправки данных в почтовом методе с использованием NSURLSession, AFNetworking, NSURLConnection, но каждый раз, когда мой сторонний разработчик говорит, что они не получают никаких данных, хотя мой разработчик co android успешно отправляет данные в POST.Я совершенно беспомощный now.Please помощь.Метод POST не работает в ios

---- Использование NSURLConnection ----

NSString *post = [NSString stringWithFormat:@"user_id=%@&email=%@",[[NSUserDefaults standardUserDefaults] valueForKey:@"UserId"],emailString]; 
NSLog(@"------%@-------",post); 
NSData *postData = [post dataUsingEncoding:NSUTF8StringEncoding ];//[post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES]; 
NSString *postLength = [NSString stringWithFormat:@"%lu",(unsigned long)[postData length]]; 
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init]; 
[request setURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@app_user_service/app_invite_email",App_Domain_Url]]]; 
[request setHTTPMethod:@"POST"]; 
[request setValue:postLength forHTTPHeaderField:@"Content-Length"]; 
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"]; 
[request setHTTPBody:postData]; 
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; 

NSURLConnection *conn = [[NSURLConnection alloc] initWithRequest:request delegate:self]; 

if(conn) { 
    NSLog(@"Connection Successful"); 
} else { 
    NSLog(@"Connection could not be made"); 
} 

// ---- Использование AFNetworking ----

NSDictionary *dic2 = @{@"user_id": [[NSUserDefaults standardUserDefaults] valueForKey:@"UserId"] , @"email" : emailString}; 

AFHTTPSessionManager *manager = [[AFHTTPSessionManager alloc]initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]]; 
manager.responseSerializer = [AFHTTPResponseSerializer serializer]; 
manager.requestSerializer = [AFJSONRequestSerializer serializer]; 
[manager.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; 

[manager POST:urlstring parameters:dic2 progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { 
    NSLog(@"success!"); 



    NSDictionary *dict=[NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingAllowFragments error:nil]; 
    NSLog(@"Response----> %@",dict); 

} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { 
    NSLog(@"error: %@", error); 
}]; 
+0

что-то может не так происходит в вашем коде необходимости, в загляните в свой код – Harshavardhan

+0

проверьте мой ответ здесь: http://stackoverflow.com/questions/35570676/how-to-post-data-from-ios-app-to-mysql-database/35571006#35571006 –

+0

@SibaPrasadHota, ваш ответ использует 'NSURLConnection' wh он устарел. Я рекомендую вам не рекомендовать его. –

ответ

1

В iOS9 компания Apple добавила новую функцию под названием App Transport Security (ATS).

ATS применяет лучшие практики во время сетевых вызовов, включая использование HTTPS.

Добавьте следующее в вас info.plist

enter image description here

Вы можете добавить исключения для определенных доменов в Info.plist:

<key>NSAppTransportSecurity</key> 
<dict> 
    <key>NSExceptionDomains</key> 
    <dict> 
     <key>testdomain.com</key> 
     <dict> 
      <key>NSIncludesSubdomains</key> 
      <true/> 
      <key>NSExceptionAllowsInsecureHTTPLoads</key> 
      <true/> 
      <key>NSExceptionRequiresForwardSecrecy</key> 
      <true/> 
      <key>NSExceptionMinimumTLSVersion</key> 
      <string>TLSv1.2</string> 
      <key>NSThirdPartyExceptionAllowsInsecureHTTPLoads</key> 
      <false/> 
      <key>NSThirdPartyExceptionRequiresForwardSecrecy</key> 
      <true/> 
      <key>NSThirdPartyExceptionMinimumTLSVersion</key> 
      <string>TLSv1.2</string> 
      <key>NSRequiresCertificateTransparency</key> 
      <false/> 
     </dict> 
    </dict> 
</dict> 
+0

добавьте один раз в свой plist и попробуйте один раз, если вы не получите ответ, мы идем для дальнейшего шага –

+0

Я добавил, что брат/сэр, поскольку я могу сделать это методом GET, проблема заключается только в методе POST: (Хотя методы, которые я применяю для POST, уже проверены во всех других проектах и ​​успешно работают там. :/ –

+0

@KoustovBasu - можете ли вы показать свой метод POST с URL-адресом и параметрами запроса, –

0

Пожалуйста, проверьте, если вы устанавливаете свойство, как показано ниже

NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init]; 
[request setURL:[NSURL URLWithString:url]]; 
[request setHTTPMethod:@"POST"]; 
[request setValue:postLength forHTTPHeaderField:@"Content-Length"]; 
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; 
[request setHTTPBody:postData]; 
+0

Да, я применил подобное .... Ответ, который я получаю каждый раз от backend - это ответ, который они отправляют, когда они не получают данные с моего конца. [request setValue: @ "application/x-www-form-urlencoded" forHTTPHeaderField: @ "Content-Type"]; –

+0

Я применил @ Content-Type ", так же, как и вы упомянули @Kiran –

+0

Спросите разработчика андроида, какое значение он задает? –

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