如何在java URI的密码中处理“@”?

时间:2015-09-02 07:42:49

标签: java uri

我有一个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一起使用。

2 个答案:

答案 0 :(得分:0)

如果它是URI使用百分比编码。

URI u1 = new URI("ssh://root:zstackqwe%3a!%40%23@172.16.36.184/");

答案 1 :(得分:0)

因此该字符串来自其他人:

这是形成错误的。让他们改为提交正确形成的网址。