使用带网关保护的 JSON Web 服务时 IOS 无响应
Posted
技术标签:
【中文标题】使用带网关保护的 JSON Web 服务时 IOS 无响应【英文标题】:No Response in IOS while using JSON Webservice with Gateway protection 【发布时间】:2014-03-14 06:03:59 【问题描述】:下面的代码是简单的登录应用程序。我使用 Post 请求传递用户名和密码来获取详细信息。但我得到了来自网络服务的 @"" 响应。
email= emailTextField.text;
password=passwordTextfield.text;
NSString *post = [[NSString alloc] initWithFormat:@"UserName=%@&Password=%@",email,password];
NSData *postData = [post dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES];
NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]];
NSURL *url = [NSURL URLWithString:@"http:Gateway/api/json"];
NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:url];
[theRequest setHTTPMethod:@"POST"];
[theRequest setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[theRequest setValue:postLength forHTTPHeaderField:@"Content-Length"];
[theRequest setHTTPBody:postData];
[theRequest setHTTPBody:postData];
NSURLResponse *response;// = [[NSURLResponse alloc] init];
NSError *error;// = [[NSError alloc] init;
NSData *urlData = [NSURLConnection sendSynchronousRequest:theRequest returningResponse:&response error:&error];
NSString *str=[[NSString alloc]initWithData:urlData encoding:NSUTF8StringEncoding];
NSLog(@"Login response: is %@",str);
【问题讨论】:
查看NSURLConnectionDelegate
提供身份验证的方法。
我应该调用哪种方法来传递用户名和密码凭据?
NSLog(@"errot: %@",error);
这是错误 o get 操作无法完成。 (NSURLErrorDomain error -1012.)" UserInfo=0xa219390 NSErrorFailingURLKey=http://1, NSErrorFailingURLStringKey=http:///api/json/reply/Customer/?, NSUnderlyingError=0x8f3e3c0 "操作无法完成。 (kCFErrorDomainCFNetwork 错误 -1012.)"
【参考方案1】:
要向服务器提供身份验证凭据,请使用 NSURLConnection 委托
- (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge
if ([challenge previousFailureCount] == 0)
NSURLCredential *credential;
credential = [NSURLCredential credentialWithUser:userName password:password persistence:NSURLCredentialPersistenceNone];
[[challenge sender] useCredential:credential forAuthenticationChallenge:challenge];
else
[[challenge sender] cancelAuthenticationChallenge:challenge];
【讨论】:
以上是关于使用带网关保护的 JSON Web 服务时 IOS 无响应的主要内容,如果未能解决你的问题,请参考以下文章