UrbanAirship /推送通知注册:NSURLErrorDomain:bad url

时间:2012-03-04 19:35:41

标签: iphone objective-c ios urbanairship.com afnetworking

我对MSMutableURLRequest有这个非常奇怪的回应:

Error Domain=NSURLErrorDomain Code=-1000 "bad URL"

这样就构成了URL。是的我知道我正在将我的测试设备的令牌放在网上。为了隐私,我改了一个数字。

self.pushTokenData = deviceToken;

NSURL *correctURL = [NSURL URLWithString:@"https://go.urbanairship.com/api/device_tokens/2d1535dfcbfd859b4f55e6b74db24c71cf6082b503d38583b0b20f2816c24ca8"];

NSString *password = [@"redacted" stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:correctURL];

NSLog(@"httpClient url: %@", [httpClient baseURL]);
[httpClient setAuthorizationHeaderWithUsername:@"redacted" password:password];
NSMutableURLRequest *request = [httpClient requestWithMethod:@"PUT" path:nil parameters:nil];

AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject){
    NSLog(@"Success: %@", responseObject);
}failure:^(AFHTTPRequestOperation *operation, NSError *error){
    NSLog(@"Failure: %@", error);
}];
[operation start];

此网址在Safari中运行良好。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

NSMutableDictionary *payload = [NSMutableDictionary dictionary];
[payload setValue:[NSArray arrayWithObjects:[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"], [[UIDevice currentDevice] model], [[NSLocale currentLocale] localeIdentifier], nil] forKey:@"tags"];
[payload setValue:[[NSTimeZone localTimeZone] name] forKey:@"tz"];

NSString *deviceTokenString = [[[deviceToken description] stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"<>"]] stringByReplacingOccurrencesOfString:@" " withString:@""];

AFHTTPClient *urbanAirshipClient = [[AFHTTPClient alloc] initWithBaseURL:[NSURL URLWithString:@"https://go.urbanairship.com/api/device_tokens/]];
urbanAirshipClient.parameterEncoding = AFJSONParameterEncoding;
[urbanAirshipClient setAuthorizationHeaderWithUsername:<# UA Application Key #> password:<# UA Application Secret #>];
[urbanAirshipClient putPath:[NSString stringWithFormat:@"device_tokens/%@", deviceTokenString] parameters:payload success:<# Success Block #> failure:<# Failure Block #>];

试试这个。