我有一个问题,真的让我挠头。似乎没有合理的理由说明为什么会这样。如果我将字符串硬编码到NSURL中就可以了。但是,如果我传递一个NSString而不是它。我已经确认NSString与NSLog的硬编码字符串相同。
有效的代码。服务器返回200响应代码。
//NSString * urlStr = [NSString stringWithFormat:@"http://www.server.com/%@",monograph.uri];
NSURL *url = [NSURL URLWithString:@"http://www.server.com/api/monograph/com/3894.json"];
ASIHTTPRequest *request;
request = [ASIHTTPRequest requestWithURL:url];
[request setUsername:appDelegate.key];
[request setPassword:appDelegate.secret];
[request setDelegate:self];
[request startAsynchronous];
代码失败。服务器为此返回204响应代码:
NSString * urlStr = [NSString stringWithFormat:@"http://www.server.com/%@",monograph.uri];
NSURL *url = [NSURL URLWithString:urlStr];
ASIHTTPRequest *request;
request = [ASIHTTPRequest requestWithURL:url];
[request setUsername:appDelegate.key];
[request setPassword:appDelegate.secret];
[request setDelegate:self];
[request startAsynchronous];
当我NSLog urlStr它包含:
http://www.server.com/api/monograph/com/3894.json
我缺少什么?必须要有一些东西来解释它 - .-
此致 代码
修改
检查两个字符串的长度,它们都是相同的长度,所以看起来不是空格或隐藏在那里的任何东西。
答案 0 :(得分:1)
从字符串中剪切所有新行/空格,这是一个可能的原因。有时日志不会显示新行。
试
NSString * s = [monograph.uri stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
NSString * urlStr = [NSString stringWithFormat:@“http://www.server.com/%@”,s];
答案 1 :(得分:1)
您是否检查过从字符串变量获取的NSURL对象是否为nil?这可以帮助你找到解决问题的位置。
此外,您可以尝试转义字符串变量,只是通过stringWithFormat调用来填充有趣的东西。