ASIHTTPRequest仅在我对字符串进行硬编码时才有效

时间:2011-05-17 13:59:28

标签: iphone objective-c

我有一个问题,真的让我挠头。似乎没有合理的理由说明为什么会这样。如果我将字符串硬编码到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

我缺少什么?必须要有一些东西来解释它 - .-

此致 代码

修改

检查两个字符串的长度,它们都是相同的长度,所以看起来不是空格或隐藏在那里的任何东西。

2 个答案:

答案 0 :(得分:1)

从字符串中剪切所有新行/空格,这是一个可能的原因。有时日志不会显示新行。

  

NSString * s = [monograph.uri stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];

     

NSString * urlStr = [NSString stringWithFormat:@“http://www.server.com/%@”,s];

答案 1 :(得分:1)

您是否检查过从字符串变量获取的NSURL对象是否为nil?这可以帮助你找到解决问题的位置。

此外,您可以尝试转义字符串变量,只是通过stringWithFormat调用来填充有趣的东西。