我有一个URL“ssh:// root:zstackqwe:!@#172.16.36.184”,其中包含密码部分中的“@”和“:”。我使用java.net.URI来包装字符串,如:
root:zstackqwe:!@
null
输出是:
- (void)viewDidLoad {
[super viewDidLoad];
NSMutableArray *myFinalListArray = [[NSMutableArray alloc] init];
//Pass here the reference the a array. It will return you the array of you county when downloaded complete.
[self getURLResponse:&myFinalListArray];
NSLog(@"countryArray:%@",myFinalListArray);
}
-(void)getURLResponse:(NSMutableArray**)countryArray{
NSURL *url = [NSURL URLWithString:@"http://acumen-locdef.elasticbeanstalk.com/service/countries"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
NSMutableArray *myFinalListArray = [[NSMutableArray alloc] init];
NSURLResponse *response;
NSError *error = nil;
NSData *data = [NSURLConnection sendSynchronousRequest:
request returningResponse:&response error:&error];
NSMutableArray *greeting = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
for (NSDictionary *countryList in greeting) {
[myFinalListArray addObject:countryList[@"name"]];
}
*countryArray = [[NSMutableArray alloc]initWithArray:myFinalListArray copyItems:YES];
}
当主机部分返回null时,权限部分是正确的。应该如何正确处理这些特殊的字符?
更新
字符串“ssh:// root:zstackqwe:!@#172.16.36.184”是一个没有任何编码的原始字符串,从API传递到我的应用程序。我无法使用UIR(字符串)以外的构造函数。所以我正在寻找一种方法来处理原始字符串,使其与jave.net.URI一起使用。
答案 0 :(得分:0)
如果它是URI使用百分比编码。
URI u1 = new URI("ssh://root:zstackqwe%3a!%40%23@172.16.36.184/");
答案 1 :(得分:0)
因此该字符串来自其他人:
这是形成错误的。让他们改为提交正确形成的网址。