【问题标题】:iOS application connect to .NET Webservice by GET methodiOS 应用程序通过 GET 方法连接到 .NET Webservice
【发布时间】:2012-03-02 14:12:17
【问题描述】:

大家!我的英语很差,很抱歉。

我想在我的测试 iOS 应用程序中实现一个功能。

有一个 .NET Webservice API 就像

“https://xxx.xxx.xx.xxx/FMS/Pages/Service/FMService.svc/Login”

我想用两个参数连接API:user和pass

使用GET方法,url会是这样的:

“https://xxx.xxx.xx.xxx/FMS/Pages/Service/FMService.svc/Login?user=xxx&pass=xxx”

如果登录,Webservice 将返回一个 JSON 值,就像 {"d":"success"}

如果不是,它也会返回一个 JSON 值,例如 {"d":"failure"}

我正在使用 ASIHTTPRequest 框架和 JSON 框架

我不知道如何实现该功能。所以请帮助我,非常感谢。

祝你好运!

NSURL *url = [NSURL URLWithString:@"https://192.168.1.245/FMS/Pages/Service/FMService.svc/Login?user=jiangxd&pass=123456"];

ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];

[request addRequestHeader:@"Accept" value:@"application/json"];

[request addRequestHeader:@"Content-Type" value:@"application/json"];

[request setRequestMethod:@"GET"];

[request setDelegate:self];

[request startAsynchronous];

NSString *responseString = [request responseString];

NSDictionary *responseDict = [responseString JSONValue];

NSString *unlockCode = [responseDict objectForKey:@"d"];

NSLog(@"%@",unlockCode);

unlockCode 始终为空...我不明白为什么!

NSURL *url = [NSURL URLWithString:@"https://192.168.1.245/FMS/Pages/Service/FMService.svc/Login?user=jiangxd&pass=123456"];
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[request startSynchronous];
NSError *error = [request error];
if (!error) 
{
    NSString *responseString = [request responseString];
    NSDictionary *responseDict = [responseString JSONValue];
    NSString *unlockCode = [responseDict objectForKey:@"d"];
    NSLog(@"%@",unlockCode);
}
else
{
    NSLog(@"%@",[error description]);
}

现在我将 startAsynchronous 更改为 startSynchronous 但也有错误:

Error Domain=ASIHTTPRequestErrorDomain Code=1 “发生连接失败:SSL 问题(可能的原因可能包括错误/过期/自签名证书,时钟设置为错误日期)” UserInfo=0x6b81640 {NSUnderlyingError=0x6b811b0 “操作无法完成。(OSStatus 错误 -9807。)”,NSLocalizedDescription=发生连接失败:SSL 问题(可能的原因可能包括错误/过期/自签名证书,时钟设置为错误日期)}

注意:网址是 https,而不是 http!(这是我收到错误的原因吗?)

但是如果我直接用浏览器访问url,Webservice会返回正确的值...

谢谢!

【问题讨论】:

    标签: ios web-services get


    【解决方案1】:

    您可能应该尝试一下,然后发布您的代码。您要求某人为您编写整个函数,我认为这不是本网站的目的。

    其次,ASIHTTPRequest 背后的开发者不再支持它。除非社区接受,否则您可能只想学习如何从头开始执行 NSURLConnections。

    编辑:我们开始了。因此,您正在异步执行此操作,这意味着当您启动它时,您不会立即获得响应。您是否设置了回调来处理响应?

    - (void)requestFinished:(ASIHTTPRequest *)request
    {
       // Use when fetching text data
       NSString *responseString = [request responseString];
    
       // Use when fetching binary data
       NSData *responseData = [request responseData];
    }
    
    - (void)requestFailed:(ASIHTTPRequest *)request
    {
       NSError *error = [request error];
    }
    

    【讨论】:

    • 好的。现在,这是一个完全不同的问题。 SSL/TLS 连接很复杂。每当您使用带有 https 的浏览器做某事时,都会为您完成很多事情,您必须在代码中手动完成。我建议关闭这个问题(接受答案)并开始一个新问题。
    • 非常感谢!我将关闭这个问题并开始一个新问题!
    • 没问题。祝你在 SSL 方面好运。
    猜你喜欢
    • 1970-01-01
    • 2011-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-18
    • 2021-05-13
    • 2021-05-22
    • 1970-01-01
    相关资源
    最近更新 更多