使用NSURL请求时网址错误

时间:2011-06-09 01:49:19

标签: iphone objective-c ios4 nsurlrequest

我正在尝试在iPhone 4.0 SDK中请求这种URL(稍微修改了访问令牌,因为你真的不需要看到它):

https://graph.facebook.com/me?sdk=ios&sdk_version=2&access_token=123902817987|8cb9e8408d2685cef853cd80.9-747882379|UGu5NvcAHiXuGEGzkq&format=json&limit=40&until=1286619821

但我收到了这条消息:

Failed with error: Error Domain=NSURLErrorDomain Code=-1000 "bad URL" UserInfo=0x9e657a0 {NSUnderlyingError=0x9e656a0 "bad URL", NSLocalizedDescription=bad URL}

当我在Safari或Chrome中复制并粘贴时,它可以正常工作。我尝试按照建议here|替换为%|,但不起作用。

从终端询问它是这样的:

curl https://graph.facebook.com/me/statuses?sdk=ios&sdk_version=2&access_token=9999955817987|8ab9e8408d2685cef.3-747882379|UGuxWDuM&format=json&limit=40&until=1286619821
[1] 16190
[2] 16191
[3] 16194
[4] 16195
[5] 16196
[2]   Done                    sdk_version=2
[4]-  Done                    format=json
$ -bash: UGu5NvcAHiXuGEGzkq3KP8xWDuM: command not found
-bash: 8ab9e8408d2685cef853cd80.3-747882379: command not found
{"error":{"type":"OAuthException","message":"An active access token must be used to query information about the current user."}}
[1]   Done                    curl https://graph.facebook.com/me/statuses?sdk=ios
[3]-  Exit 127                access_token=9999955817987 | 8ab9e8408d2685cef.3-747882379 | UGuxWDuM
[5]+  Done                    limit=40

有什么想法吗?

4 个答案:

答案 0 :(得分:21)

 NSString *strURL = [loc_address stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

            // requesting weather for this location ... 
            NSMutableURLRequest *req = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:[NSString stringWithFormat: @"http://www.google.com/ig/api?weather=%@", strURL]] cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:5.0];
            [req setHTTPMethod:@"POST"];
            [req addValue:@"text/xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"];

答案 1 :(得分:7)

您需要使用%7C替换网址中的竖线字符。这是URL编码值。

此外,URL必须用引号括起来才能使用curl。

答案 2 :(得分:0)

ho ho ho。

使用您想要的地点ID设置location_id

这让我浪费了很多时间。

在制作你想要的东西时,有十几个facebook秘密就是调试网络,在这种情况下创建一个事件。您将看到正确的参数名称,以满足您的需求。

答案 3 :(得分:0)

此错误消息也可能是由URL输入中的任何错误引起的。通常在URL字符串中有一些空格。