2011-05-21 22 views
1

我正在使用ASIFormDataRequest将图片上传到TwitPic,并且我得到了一个响应,从这里一切正常。但在- (void)requestFinished:(ASIHTTPRequest *)request我已经有一个TwitLonger响应的动作(正常工作)。现在,我将如何根据响应类型来执行不同的操作?我尝试设置一个字符串并与if进行比较,得到响应的最后一个东西,但没有运气。这是我试过的方式:如何根据ASIHTTPRequest执行不同的操作?

- (void)requestFinished:(ASIHTTPRequest *)request 
{ 
    NSString *responseString = [request responseString]; 

    NSString *first = [responseString substringFromIndex: [responseString length] - 7]; 
    NSLog(@"%@", first); 
    if (first == @"</rsp>"+ 
     ) { 
     NSString *responseString = [request responseString]; 
     NSLog(@"%@", responseString); 
     NSString *result = nil; 
     // Determine "<div>" location 
     NSRange divRange = [responseString rangeOfString:@"<mediaurl>" options:NSCaseInsensitiveSearch]; 
     if (divRange.location != NSNotFound) 
     { 
      // Determine "</div>" location according to "<div>" location 
      NSRange endDivRange; 

      endDivRange.location = divRange.length + divRange.location; 
      endDivRange.length = [responseString length] - endDivRange.location; 
      endDivRange = [responseString rangeOfString:@"</mediaurl>" options:NSCaseInsensitiveSearch range:endDivRange]; 

      if (endDivRange.location != NSNotFound) 
      { 
       // Tags found: retrieve string between them 
       divRange.location += divRange.length; 
       divRange.length = endDivRange.location - divRange.location; 

       result = [responseString substringWithRange:divRange]; 
      } 
      tweet.text = result; 
      NSLog(@"%@", result); 
     } 
    } else { 

    // Use when fetching text data 
    NSString *responseString = [request responseString]; 
    NSLog(@"%@", responseString); 
    NSString *result = nil; 
     // Determine "<div>" location 
     NSRange divRange = [responseString rangeOfString:@"<content>" options:NSCaseInsensitiveSearch]; 
     if (divRange.location != NSNotFound) 
     { 
      // Determine "</div>" location according to "<div>" location 
      NSRange endDivRange; 

      endDivRange.location = divRange.length + divRange.location; 
      endDivRange.length = [responseString length] - endDivRange.location; 
      endDivRange = [responseString rangeOfString:@"</content>" options:NSCaseInsensitiveSearch range:endDivRange]; 

      if (endDivRange.location != NSNotFound) 
      { 
       // Tags found: retrieve string between them 
       divRange.location += divRange.length; 
       divRange.length = endDivRange.location - divRange.location; 

       result = [responseString substringWithRange:divRange]; 
      } 
      tweet.text = result; 
      [_engine setAccessToken:token]; 
      [_engine sendUpdate:tweet.text]; 
      [self.parentViewController dismissModalViewControllerAnimated:true]; 
     } 
    } 
} 

这是响应的一个例子:

<?xml version="1.0" encoding="UTF-8"?> 
<rsp stat="ok"> 
<mediaid>50ia96</mediaid> 
<mediaurl>URL GOES HERE</mediaurl> 
</rsp> 

这样结束了,我想越来越标签之间的URL的内容。

在此先感谢!

回答

1

Go to their documentation,并向下滚动到“在委托方法中处理多个请求的成功和失败”部分。他们为您提供了三种选择 - 大多数情况下,您在发出请求时设置userInfo字典就足够了,然后在回调中读取它并采取适当的行动。一些简单的代码:

一套这样当您创建和启动的要求:

request.userInfo = [NSDictionary dictionaryWithObjectsAndKeys: @"firstRequestId", @"id", nil]; 

,然后在你的回调:

if([[request.userInfo objectForKey:@"id"] isEqualToString:@"firstRequestId"]) { 
    // Handle the request with id 'firstRequestId' 
} 
+0

感谢您的联系!我认为第一个选项(用户信息一)似乎是正确的,但我该怎么做呢?谢谢:) – pmerino 2011-05-21 13:07:15

+0

检查我编辑的答案 – phi 2011-05-21 13:16:21

+0

非常感谢!它的工作:D – pmerino 2011-05-21 13:19:13

相关问题