NSMutableURLRequest and a Password with special Characters won't work

Posted by twickl on Stack Overflow See other posts from Stack Overflow or by twickl
Published on 2009-09-12T19:01:30Z Indexed on 2010/05/20 6:10 UTC
Read the original article Hit count: 284

Filed under:
|
|
|

I'm writing a small program (using Cocoa Touch), which communicates with a webservice. The code for calling the webservice, is the following:

- (IBAction)send:(id)sender
{
    if ([number.text length] > 0)
    {
    	[[UIApplication sharedApplication] beginIgnoringInteractionEvents];  
    	[activityIndicator startAnimating];
    	NSString *modded;
    	modded = [self computeNumber];
    	NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:      [NSURL URLWithString:@"https://tester:%=&[email protected]/RPC2"]];
    	[theRequest setHTTPMethod:@"POST"];
    	[theRequest addValue:@"text/xml" forHTTPHeaderField:@"content-type"];
    	[theRequest setCachePolicy:NSURLCacheStorageNotAllowed];
    	[theRequest setTimeoutInterval:5.0];
    	NSString* pStr = [[NSString alloc] initWithFormat:@"<?xml version=\"1.0\" encoding=\"UTF-8\"?><methodCall><methodName>samurai.SessionInitiate</methodName><params><param><value><struct><member><name>LocalUri</name><value><string></string></value></member><member><name>RemoteUri</name><value><string>sip:%@@sipgate.net</string></value></member><member><name>TOS</name><value><string>text</string></value></member><member><name>Content</name><value><string>%@</string></value></member><member><name>Schedule</name><value><string></string></value></member></struct></value></param></params></methodCall>", modded, TextView.text];
    	NSData* pBody = [pStr dataUsingEncoding:NSUTF8StringEncoding];
    	[theRequest setHTTPBody:pBody];
    	NSURLConnection *theConnection = [[NSURLConnection alloc]     initWithRequest:theRequest delegate:self];

    	if (!theConnection)
    	{
    		UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" 
    					    								message:@"A Connection could not be established!"
    													   delegate:nil 
    											  cancelButtonTitle:@"OK" 
    											  otherButtonTitles: nil];
    		[alert show];
    		[alert release];
    		sendButton.enabled = TRUE;
    		return;
    	}
    	[pStr release];
    	[pBody release];
    }
}

The Username and Password have to be in the URL, and it works in most cases, but when the password consists of special characters like in the example "%=&=-Test2009", the Webservice does not respond. If it is something like "Test2009" it works fine. Does anyone have an idea why, and maybe a solution for that?

© Stack Overflow or respective owner

Related posts about iphone

Related posts about cocoa-touch