无法在 iOS 中访问 Web 服务

Posted

技术标签:

【中文标题】无法在 iOS 中访问 Web 服务【英文标题】:Cannot access web service in iOS 【发布时间】:2013-02-27 08:05:41 【问题描述】:

我想从我的 ios 应用程序连接到网络服务。以前我的网址是http://<domain name>/mobilews/mobilews.asmx。最近换成了http://<domain name>/mobilewstest/mobilews.asmx

我已将我的 URL 放入 info plist 文件中。但是在我将其更改为新 URL 后,我无法登录。

NSString *urlString = [NSString stringWithFormat:@"%@%@",serverURL,[queryString  stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding]]; 

NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
[request setURL:[NSURL URLWithString:urlString]];
[request setHTTPMethod:@"GET"];


NSHTTPURLResponse *response ;

NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:nil];

int statusCode = [((NSHTTPURLResponse *)response) statusCode];`

这里returnData变成nillstatusCode是0。但是这个urlString在浏览器中给出时成功登录到Web服务。

【问题讨论】:

【参考方案1】:
    NSURL *url = [NSURL URLWithString:@"YOUR URL HERE"];
    NSError *connectionError = nil;
    NSData *inData = [NSData dataWithContentsOfURL:url options:NSDataReadingUncached error:&connectionError];
    NSInteger code = [connectionError code];
    if (code != 0)
    
        NSString *locDesc = [NSString stringWithString:[connectionError localizedDescription]];
        NSString *locFail = [NSString stringWithString:[connectionError localizedFailureReason]];
        NSLog(@"Error: %d %@ %@", code, locDesc, locFail);
    
    else if ([inData length] == 0)
    
        NSLog(@"No data");
    
    else
    NSData *resultData  = [NSData dataWithContentsOfURL:url];
    NSString *responseString = [[NSString alloc]initWithData:resultData encoding:NSUTF8StringEncoding];
    

我看到你发送了一个同步请求...试试这个更简单的方法。

【讨论】:

但是 responseString 是空的。为什么会这样? 用硬编码的 url 试试看,然后再看看……然后在浏览器中尝试同样的硬编码的 url。 只要确定,方法类型是“GET”而不是“POST” 非常感谢,当我对其工作进行硬编码时。但我想获取状态码以检查它是否为 200。我怎样才能根据你的代码检查这个 嗨,但我想知道为什么它在硬编码时会起作用。 "NSString *urlString = [NSString stringWithFormat:@"%@%@",serverURL,[queryString stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding]];"如果我把这个字符串它不起作用。这是为什么呢?

以上是关于无法在 iOS 中访问 Web 服务的主要内容,如果未能解决你的问题,请参考以下文章

无法通过浏览器访问 Web 服务

无法复制Web服务器证书模板。访问被拒绝

使浏览器无法访问 Web 服务?

腾讯云 轻量应用服务器 mitmweb 无法访问?

无法在我的 Cordova iOS 应用程序中连接到本地 Web 服务器

外网无法访问自己搭建的web服务问题